Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[PHP] Textstring abschneiden, ohne wort zu durchtrennen???

Empfohlene Antworten

Veröffentlicht

Hallo Leute,

hatte ja schon Hier gefragt wie man einen Textstring nach 200 Zeichen abschneiden kann....

Jetzt hab ich das Problem das nach 200 Zeichen natürlich nicht immer ein Wort

gerade zu ende ist.

Könnt ihr mir beim Lösungsansatz für das Problem Helfen?

Ich möchte den Newstext nach ca. 200 abbrechen und als Anreistext auf

die Startseite legen und mit einem Link zum "weiterlesen" anregen....

dabei soll aber kein Wort zertrennt werden.

Du überprüfst einfach, ob an dieser Stelle ein Leerzeichen steht (ungetestet):


$pos = 200;
$loop = 1;
while () {
if (substr($string, $pos+$loop,1) === " ") {
$pos+=$loop;
break;
}
if (substr($string, $pos-$loop,1) === " ") {
$pos-=$loop;
break;
}
$loop++;
}

$part = substr($string,0,$pos);
[/PHP]

Oder so:


$text = "lorem ipsum dolor lorem ipsum dolor lorem ipsum dolor lorem ipsum dolor lorem ipsum dolor lorem ipsum dolor lorem ipsum dolor lorem ipsum dolor lorem ipsum dolor lorem ipsum dolor lorem ipsum dolor ipsum";

if (preg_match("/^(.{0,200})[^\w]/is",$text,$pregRes)) {	

	echo $pregRes[0];

}

werd beide lösungen mal ausprobieren.

@Monty82:

Das sind reguläre Ausdrücke, oder?

PS: Finds echt super hier, wie schnell ihr immer seit!!!!! :uli :uli

THX

Ja, sind es, aber ich habe vergessen zu erwähnen, dass Du den anderen Fall noch abfangen musst, also wenn der regüläre Ausdruck nicht matcht, z.B. wenn der Text kürzer als 200 Zeichen ist oder nur aus einem sehr langen Wort besteht...

Und eventuell solltest Du statt $pregRes[0] $pregRes[1] verwenden, falls Du das Zeichen nach dem Wort (z.B. Leerzeichen oder Satzzeichen) nicht haben möchtest...

*kopfkratz*

wo kommt in dem Code überhaupt das $PregRes her ?

ansonsten kannst du noch ein Split auf Leerzeichen machen, und dann zusammenbauen, bis 200 Zeichen überschritten werden. Ist von der Performance halt nicht so schön.

wo kommt in dem Code überhaupt das $PregRes her?

Das ist der dritte Parameter der preg_match()-Funktion und enthält nachher als Array das Gesamtergebnis des Ausdrucks, sowie die Teilergebnisse der Klammern innerhalb des regulären Ausdrucks.

Den Namen habe ich frei gewählt...

ah ok, danke. Dann wird das von preg_match aus Zeiger übernommen....

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.