Hat jemand ein PHP-Code-Snippet, um den ersten "Satz" in einer Zeichenkette zu erfassen?

7

Wenn ich eine Beschreibung wie:

habe

"Wir bevorzugen Fragen, die beantwortet werden können, nicht nur diskutiert. Geben Sie Details. Schreiben Sie klar und einfach."

und alles, was ich will, ist "Wir bevorzugen Fragen, die beantwortet werden können, nicht nur diskutiert."

Ich würde sagen, ich würde nach einem regulären Ausdruck suchen, wie "[.! \?]", die strpos bestimmen und dann einen Teilstring von der Hauptsaite machen, aber ich stelle mir vor, es ist eine gewöhnliche Sache, also jemanden zu hoffen ein Schnipsel rumliegen.

Danke!

    
FilmJ 16.07.2009, 05:05
quelle

8 Antworten

16

Ein etwas kostspieligerer Ausdruck, der jedoch anpassungsfähiger ist, wenn Sie mehrere Satzzeichen als Satzabschlusszeichen auswählen möchten.

%Vor%

Finde Terminzeichen gefolgt von einem Leerzeichen

%Vor%     
Ian Elliott 16.07.2009, 05:09
quelle
6
%Vor%     
Jason 16.07.2009 05:08
quelle
3

Meine vorherige Regex schien im Tester zu funktionieren, aber nicht in PHP. Ich habe diese Antwort bearbeitet, um vollen, funktionierenden PHP-Code und eine verbesserte Regex zu liefern.

%Vor%     
dyve 16.07.2009 14:08
quelle
2
%Vor%

Ausgabe ist:

  

Mein Name ist Younas. Ich lebe auf dem Pakistan.

    
Muhammad Younas 29.03.2013 20:49
quelle
0
%Vor%     
p00ya 16.07.2009 05:09
quelle
0
%Vor%     
user139197 16.07.2009 05:11
quelle
0

Ich würde wahrscheinlich irgendeine der vielen Teilstring- / String-Split-Funktionen in PHP verwenden (einige hier bereits erwähnt). Aber suchen Sie auch nach "." ODER ". \ N" (und möglicherweise ". \ N \ r") statt nur nach ".". Nur für den Fall, aus welchem ​​Grund auch immer, enthält der Satz einen Punkt, auf den kein Leerzeichen folgt. Ich denke, es wird die Wahrscheinlichkeit erhöhen, dass Sie echte Ergebnisse erzielen.

Beispiel, Suche nach nur "." an:

%Vor%

Bekommt Sie:

%Vor%

Wenn wirklich, ich bin sicher, dass Sie bevorzugen würden:

%Vor%

Und wenn Sie einmal diese einfache Suche haben, werden Sie wahrscheinlich auf ein oder zwei Gelegenheiten stoßen, wo es etwas verpassen könnte. Stimmen Sie, wie Sie damit laufen!

    
Alexander Trauzzi 16.07.2009 05:19
quelle
0

Das ist ein wirklich hartes Problem. Ich empfehle, in ein NLP-Paket zu schauen, wenn Sie robuste Ergebnisse benötigen. Ein Tokenizer kann Satzendezeichen identifizieren (entweder "?", ".", ";" Usw.), abhängig von Ihrer beabsichtigten Verwendung, und Sie können sich darauf trennen.

    
Kevin Peterson 17.07.2009 07:28
quelle

Tags und Links