Wie zählen Sie die Wörter in einer bestimmten Zeichenfolge in PHP?

7

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%     
Waseem Abu Senjer 24.01.2011, 20:27
quelle

9 Antworten

17

Vielleicht könnte str_word_count helfen

Ссылка

%Vor%     
Francesco Laurita 24.01.2011, 20:30
quelle
10

Sie können die eingebaute PHP-Funktion str_word_count verwenden. Benutze es so:

%Vor%

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.

    
Michael Irigoyen 24.01.2011 20:30
quelle
6

Versuchen Sie Folgendes:

%Vor%

Dies wird ausgegeben: 5

    
Amr 23.12.2012 11:43
quelle
4

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.

    
arnaud576875 24.01.2011 20:30
quelle
4

str_count_words hat seine Fehler. Es zählt Unterstriche als getrennte Wörter wie this_ist zwei Wörter:

Sie können die nächste Funktion verwenden, um Wörter, die durch Leerzeichen getrennt sind, zu zählen, auch wenn mehr als eins dazwischen ist.

%Vor%     
Mackraken 20.09.2012 06:43
quelle
2

Verwenden Sie preg_split () anstelle von explode (). Split unterstützt reguläre Ausdrücke.

    
Jeff Lamb 24.01.2011 20:29
quelle
1

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%     
Behzad-Ravanbakhsh 09.04.2011 14:50
quelle
0

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;

}

    
F.E Noel Nfebe 09.03.2016 14:29
quelle
0

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%     
Sean Gallagher 20.05.2016 17:00
quelle

Tags und Links