Hier ist, was ich versuche zu tun. Ich habe einen Block Text und ich möchte die ersten 50 Wörter aus der Zeichenfolge extrahieren, ohne die Wörter in der Mitte abzuschneiden. Deshalb würde ich Wörter bevorzugen, die Zeichen gegenüberstehen, dann könnte ich einfach eine left () -Funktion verwenden.
Ich weiß, dass die Funktion str_word_count ($ var) die Anzahl der Wörter in einer Zeichenkette zurückgibt, aber wie würde ich nur die ersten 50 Wörter zurückgeben?
Ich werde mich voll und ganz mit PHP befassen und bin mit vielen der String-Funktionen noch nicht vertraut.
Vielen Dank im Voraus, Jason
Ich würde empfehlen, die Anzahl der Wörter als Basis zu verwenden. Sie könnten leicht mit viel weniger oder viel mehr Daten enden, als Sie anzeigen wollten.
Ein Ansatz, den ich in der Vergangenheit benutzt habe, besteht darin, nach einer gewünschten Länge zu fragen, aber achte darauf, dass kein Wort abgeschnitten wird. Hier ist etwas, das für Sie arbeiten könnte:
%Vor% Wenn Sie 1
als zweiten Parameter an str_word_count
übergeben, wird ein Array mit allen Wörtern zurückgegeben, und Sie können die Array-Manipulation verwenden.
Außerdem könntest du obwohl es etwas hackey ist, die Zeichenkette auf Leerzeichen explodieren lassen usw. Aber das bringt viel Platz für Fehler, wie Dinge, die nicht Wörter sind, die als Wörter gezählt werden.
PS. Wenn Sie eine Unicode-sichere Version der obigen Funktion benötigen und entweder die Erweiterungen mbstring
oder iconv
installiert haben, ersetzen Sie einfach alle Zeichenfolgenfunktionen durch ihre entsprechenden mb_
oder iconv_
.
Sind Sie sicher, dass Sie eine bestimmte Anzahl von Wörtern haben möchten? Wenn Sie etwas wie eine "Vorschau" machen, ist es im Allgemeinen besser, etwas wie "Bis zu 300 Zeichen, abgeschnitten an einer Wortgrenze" zu machen. In diesem Fall können Sie etwas wie:
verwenden %Vor%Ich habe einen einfacheren Weg gefunden:
function get_len_of_word($str,$number)
{
$array_str = explode(" ", $str);
if(isset($array_str[$number]))
{
return implode(" ",array_slice($array_str, 0, $number));
}
return $str;
}