Zeichenkette verarbeiten - beim letzten Leerzeichen abschneiden
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abschneiden
anregung
ausgabe
aussehen
code
datenbank
erscheinen
form
grad
http
klartext
nachricht
pos
realisieren
string
tip
tolle nachricht
url
vorschau
zeichen
-
Guten Morgen zusammen.
Ich habe folgende Problemstellung zu lösen. Für eine Vorschaufunktion will ich aus meiner Datenbank Nachrichten auslesen und für eine Vorschau ausgeben in gekürzter Form.
Beispiel:
Datenbankeintrag: Das ist eine tolle Nachricht, welche in der Vorschau erscheinen soll und zwar in gekürzter Form.
Ich lese also die Nachricht aus der Datenbank und entferne diversen Code, so dass ich am Ende nur noch eine normale Zeichenkette habe. Danach kürze ich die Zeichenkette auf 160 Zeichen.
Bei folgendem Beispiel könnte dann die Ausgabe wie folgt aussehen, was natürlich nicht so toll ist.
Ausgabe: Das ist eine tolle Nachricht, welche in der Vorschau erscheinen soll und zwar in gekü
Man sieht, das letzte Wort ist abgeschnitten, deshalb würde ich nun von dort zum letzten Leerzeichen gehen und von dort an das letzte Stück abschneiden, hab aber grad keine Idee, wie das zu realisieren ist.
Vielen Dank schonmal für Anregungen und Tipps. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Dazu kann man die PHP-Funktion strrpos verwenden
<?php $str = substr($str,0,160); // String auf 160 zeichen kürzen $pos = strrpos($str," "); // letzten leerzeichen suchen if($pos !== false) { // wenn gefunden $str = substr($str,0,$pos); // bis zum letzten leerzeichen kürzen } ?>
Beitrag zuletzt geändert: 28.10.2009 10:16:56 von thomasba -
geht ganz einfach:
folgendes Beispiel sucht die Position des Leerzeichens (beginnend ab dem 140. Zeichen). schneidet dort ab und fügt [...] hinten dran
if (strlen($string) > 160) { $str_len = strpos($string," ",140); $string = substr($string,0,$str_len)." [...]"; }
Ohne if-Abfrage wird der String automatisch nur bis zum 1. Leerzeichen ausgegeben.
Hoffe, das hilft Dir weiter.
Beitrag zuletzt geändert: 28.10.2009 10:14:07 von rnitsche -
Ganz vergessen, derzeit mach ich das so:
$klartext=strip_tags($news->news_inhalt); $ausgabe=substr ( $klartext, 0 , 180 );
Werde mir aber eure Codes anschauen und bedanke mich schon mal
EDIT: Funktioniert prima. Kann geschlossen werden. Danke!
Beitrag zuletzt geändert: 28.10.2009 10:32:07 von karpfen -
karpfen schrieb:
Bei folgendem Beispiel könnte dann die Ausgabe wie folgt aussehen, was natürlich nicht so toll ist.
Ausgabe: Das ist eine tolle Nachricht, welche in der Vorschau erscheinen soll und zwar in gekü
Man sieht, das letzte Wort ist abgeschnitten, deshalb würde ich nun von dort zum letzten Leerzeichen gehen und von dort an das letzte Stück abschneiden, hab aber grad keine Idee, wie das zu realisieren ist.
Vielen Dank schonmal für Anregungen und Tipps.
Regular expressions sag ich mal:
<?php // Text bzw. String der durchsucht werden soll $string = <<<EOF Ausgabe: Das ist eine tolle Nachricht, welche in der Vorschau erscheinen soll und zwar in gekü EOF; $pattern = '/(.*)\s\S+$/'; if (preg_match_all($pattern, $string, $array)) { $string = $array[1]; } echo $string; ?>
(der Code ist ungetested)
Edit:
Zum pattern:
Der Ausdruck sucht nach beliebig vielen zeichen (.*) an deren ENDE($) mindestens EIN (+) zeichen vorkommt das KEIN leerzeichen (\S) ist und wo ein leerzeichen (\s) davor steht.
http://www.regex-tester.de/uc_793_de.html
http://www.regex-tester.de/regex_glossar.html
Beitrag zuletzt geändert: 28.10.2009 10:44:43 von simuliertes -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage