PHP Text auf 1. Satz kürzen

Cumulonimbus

Lt. Junior Grade
Registriert
Feb. 2007
Beiträge
303
Hallo,

ich kürze bereits einen Text erfolgreich ab, in dem ich im Text nach den ersten 6 Zeichen nach dem 1. Punkt suche und zwar mit:

PHP:
<?php
$text = "31.10.2010 - 16:00 Uhr - Das ist ein Test.";
 
echo substr( $text, 0, strpos( $text, ".", 6)+1 ); 

?>

Wäre es nicht besser, nach dem letzten Leerzeichen nach dem letzten Wort und vor dem Punkt zu suchen? Denn bei Datum ala 11.11. oder Aufzählungen mit 1., 2. 3. usw. würde dann der Satz genau dort abgeschnitten

Wie mach ich das dann am besten?

Gruß,
Cb
 
Würde funktionieren - aber nicht, wenn du bspw. eine Abkürzung im Text hast. Das würde falsch erkannt.

Ohne eindeutige Markierung/Satzbau wird das schwierig.
 
Wäre es eine Option nach Punkt + Leerzeichen + Großbuchstabe zu suchen? Bei Bedarf kann ich dir das zusammentippen (wenn mir niemand zuvorkommt ;)).

Edit:
Regulärer Ausdruck '/^.*\.\ [A-Z]/'
Weder richtig durchdacht, noch überprüft. Nur mal als Idee.

Problem mit Abkürzung mit folgenden Großbuchstaben bleibt, aber es dürfte deutlich öfter klappen als die bisherige Lösung.
 
Zuletzt bearbeitet:
.fF schrieb:
Wäre es eine Option nach Punkt + Leerzeichen + Großbuchstabe zu suchen? Bei Bedarf kann ich dir das zusammentippen (wenn mir niemand zuvorkommt ;)).

Edit:
Regulärer Ausdruck '/^.*\.\ [A-Z]/'
Weder richtig durchdacht, noch überprüft. Nur mal als Idee.

Du meinst, nach diesem zu suchen? Das würde ja den Anfang des 2. Satzes markieren und nachdem man dies weiß, weiß man auch den 1. Satz zu deklarieren. Ja, das wäre ein Option. Wobei der Satzanfang ein beliebiges Zeichen sein sollte, gerade bei Auflistungen die mit dem 1. Zeichen im Satz mit einer Zahl beginnen.

Gruß und Dank,
Cb
 
Cumulonimbus schrieb:
Du meinst, nach diesem zu suchen? Das würde ja den Anfang des 2. Satzes markieren und nachdem man dies weiß, weiß man auch den 1. Satz zu deklarieren. Ja, das wäre ein Option. Wobei der Satzanfang ein beliebiges Zeichen sein sollte, gerade bei Auflistungen die mit dem 1. Zeichen im Satz mit einer Zahl beginnen.

Gruß und Dank,
Cb
Allein hier wären 3 Fehler möglich.

Was hast du denn genau vor; von einem langen Artikel den ersten Absatz ausgeben? Dann sollte man das von Beginn an vielleicht gleich anders abspeichern.
 
Mr. Snoot schrieb:
Allein hier wären 3 Fehler möglich.

Was hast du denn genau vor; von einem langen Artikel den ersten Absatz ausgeben? Dann sollte man das von Beginn an vielleicht gleich anders abspeichern.

Im gezeigten Fall geht es darum, jeweils den neuesten Eintrag eines Changelogs auf der Webseite anzuzeigen, genau in dem beschriebenen Format. Der letzte Eintrag steht an erster Stelle und wird durch einen Absatz <p> und </p> umschlossen oder durch zwei <br /> <br />vom nächsten Eintrag getrennt.
 
Ist dieser Eintrag dieser eine Satz?

Zeig am besten mal ein komplettes Beispiel, wie der Text aktuell gespeichert ist (in einer DB?) usw..
 
Mr. Snoot schrieb:
Ist dieser Eintrag dieser eine Satz?

Zeig am besten mal ein komplettes Beispiel, wie der Text aktuell gespeichert ist (in einer DB?) usw..

Der Text wird über das CMS so in die Datenbank gelegt. Ich darf in der Auflistung dazu aber nie den Punkt vergessen, sonst gibts Müll.


HTML:
<p>30.10.2010 - bla bla blabla, blablablabla.</p>

<p>29.10.2010 - bla bla blabla, blablablabla.</p>

<p>08.10.2010 - bla bla blabla, blablablabla.</p>

<p>07.10.2010 - bla bla blabla, blablablabla.</p>
 
Cumulonimbus schrieb:
Du meinst, nach diesem zu suchen?

Ne, mit einer Klammerung hättest du direkt den ersten Satz in einer Variable, z.B.
'/^(.*\.)\ [A-Z]/'

Wenn du Auflistungen drin hast, wirds wieder nix. Weil man dann auch noch mit den Datum verwechselt. Das Beste und verbreiteste wäre fixe Zeichenzahl und 3 Punkte dahinter. Oder extra speichern, wie Mr. Snoot es vorgeschlagen hat.
 
Zurück
Oben