Ich möchte die Wörter in einer bestimmten Zeichenfolge zählen, damit ich sie validieren und verhindern kann, dass Benutzer mehr als 100 Wörter schreiben.
Ich habe diese Funktion geschrieben, aber ich denke nicht, dass sie effektiv genug ist. Ich habe die explode-Funktion mit Leerzeichen als Trennzeichen verwendet, aber was ist, wenn der Benutzer zwei Leerzeichen anstelle von einem setzt. kannst du mir einen besseren Weg geben, das zu tun?
%Vor% Sie können die eingebaute PHP-Funktion str_word_count
verwenden. Benutze es so:
Dies wird 5 ausgeben.
Wenn Sie Sonderzeichen in einem Ihrer Wörter verwenden möchten, können Sie zusätzliche Zeichen als dritten Parameter angeben.
%Vor%Dies wird 6 ausgeben.
Diese Funktion verwendet eine einfache Regex, um die Eingabe $ text auf ein beliebiges Nicht-Buchstaben-Zeichen aufzuteilen:
%Vor%Dies stellt sicher, dass es korrekt funktioniert, wenn Wörter durch mehrere Leerzeichen oder andere Buchstaben getrennt sind. Es behandelt auch Unicode (z. B. akzentuierte Buchstaben) korrekt.
Die Funktion gibt "true" zurück, wenn die Wortzahl kleiner als $ length ist.
Verwenden Sie substr_count , um die Anzahl aller Vorkommen von Teilzeichenfolgen zu zählen. Um die Anzahl der Wörter zu finden, setzen Sie $ nadel auf ''. int substr_count (String $ Heuhaufen, String $ Nadel)
%Vor%Zwischen n Objekten gibt es n-1 Leerzeichen, also gibt es 99 Leerzeichen zwischen 100 Wörtern, also kann man die Länge eines Wortes wählen und sagen, zB 10 Zeichen, dann multiplizieren mit 100 (für 100 Wörter) und dann 99 addieren (Leerzeichen), dann können Sie stattdessen die Begrenzung basierend auf der Anzahl der Zeichen (1099) vornehmen.
%Vor%if (strlen ($ text) & gt; 1099)
%Vor%sonst true zurückgeben;
}
Ich habe eine Funktion geschrieben, die besser ist als str_word_count
, weil diese PHP-Funktion Bindestriche und andere Zeichen als Wörter zählt.
Auch meine Funktion spricht das Problem der doppelten Leerzeichen an, die viele der Funktionen, die andere Leute geschrieben haben, nicht berücksichtigen.
Auch diese Funktion behandelt HTML-Tags. Wenn Sie zwei Tags verschachtelt hätten und einfach die strip_tags
-Funktion verwendet hätten, würde dies als ein Wort gezählt werden, wenn es zwei ist. Zum Beispiel: <h1>Title</h1>Text
oder <h1>Title</h1><p>Text</p>
Zusätzlich entferne ich JavaScript zuerst, andernfalls würde der Code innerhalb der <script>
-Tags als Wörter gezählt werden.
Schließlich behandelt meine Funktion Leerzeichen am Anfang und am Ende einer Zeichenfolge, mehrere Leerzeichen und Zeilenumbrüche, Zeichen und Tabstoppzeichen.
%Vor%Tags und Links string php validation explode