Erhalte das gleiche Ergebnis für php 'str_len' wie für jQuery '.val (). length ()'

8

Ich benutze jQuery, um den Wert einer Textarea im laufenden Betrieb zu zählen:

%Vor%

... dann über submit das Formular serialisieren, den Text des Textfelds per Ajax an eine PHP-Datei senden, die dann den Text auf der Serverseite validiert. Ich habe jedoch Probleme mit Zeilenumbrüchen und Leerzeichen.

Natürlich, wenn ich den Text "so wie er ist" aus dem Textfeld bekomme, zählt php jede neue Zeile als zwei oder vier Zeichen ( \n , ...). Also habe ich versucht, sie durch etwas zu ersetzen:

%Vor%

oder das:

%Vor%

Allerdings, wenn ich z. 10 Absätze und jQuery gibt 2500 Zeichen zurück, php gibt entweder 2510 oder 2490 zurück, abhängig davon, ob ich neue Zeilen durch Leerzeichen ersetzen oder komplett entfernen soll. Also ist der Unterschied 20, aber es gibt nur 10 neue Zeilen ...?

Was vermisse ich? Wie kann ich PHP erhalten, um das gleiche Ergebnis wie jQuery zurückzugeben? Wo ist das Problem, in PHP oder in jQuery?

    
Chris 14.08.2012, 10:35
quelle

1 Antwort

3

Das sollte funktionieren:

%Vor%

Erläuterung:

strlen(str_replace(array("\r", "\n"), ' ', $text)))

Hier ersetzen Sie \ r und \ n durch ein Leerzeichen, sodass sich die Anzahl der Zeichen nicht wirklich ändert.

strlen(preg_replace('/\s+/', ' ', trim($text)))

Hier reduzieren Sie fortlaufende Leerzeichen in ein einzelnes ' ' .

    
Dogbert 14.08.2012 10:41
quelle

Tags und Links