String kürzen aber nich Wort abschneiden
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abschneiden
alternative nutzen
beispiel
besseres beispiel
besten methode
code
ende
letzte wort
methode
position
satzzeichen
schau
string
suche
text
trennen
umbruch
wort
zeichen
zweite methode
-
Hallo
ich suche ach einer (der besten) Methode um
einen String (text) zu kürzen, aber ohne am Ende ein Wort abschneiden
Beispiel:
einen Text ($string) mit 500 Zeichen soll auf max. 150 Zeichen ($maxlen) gekürzt werden
an Stelle 145 begint Wort: "Information", das würde bei nur substr() zu "Infor" abgeschnitten
also soll der Text bis zum Leerzeichen vor dem letzen Wort gekürzt werden.
(wenn das letzte Wort nicht mehr in die $maxlen rein passt
außer an der Position 151 ist ein Leerzeichen oder ein Satzzeichen . , ; / ) ] : oder Umbruch \n ... etc.
... habe 2 Möglichkeiten gefunden, welche ist die "beste" ?
(1) String kürzen ... substr() + preg_replace()
$endstr = substr($string, 0, $maxlen); $string = preg_replace("/[^ ]*$/", '', $endstr);
(2) String kürzen ... substr() + strrpos()
$string = substr($string.' ' , 0 , $maxlen + 1); $string = substr($string , 0 , strrpos ($string , ' '));
hm .... hier werden ja auch "nur" Leerzeichen zwischen Worte beachtet,
nach einem (letzten) Wort kann aber auch Satzzeichen oder Umbruch sein
... oder wie sonst einen String "suber" kürzen
Beitrag zuletzt geändert: 17.8.2013 11:08:19 von strategiespiele -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo
ich würde die zweite Methode nehmen, .... ohne preg_replace()
das soll man ja - vwenn möglich - vermeiden / Alternative nutzen
... liest man so
-
Deine erste Methode ist auf jeden Fall flexsibler!
Aber anstatt nur nach einem Leerzeichen zu suchen, kannst du direkt nach Satzzeichen und co suchen. Ein besseres Beispiel wäre:
$endstr = substr($string, 0, $maxlen); $string = preg_replace("/[\s\.,!\?]*$/", '', $endstr);
Beitrag zuletzt geändert: 24.8.2013 14:31:02 von projekt-brainstorming -
du hast noch viel mehr möglichkeiten mit regulären ausdrücken, schau dir den Aufbau der preg_replace genau an, dann müsstest du selbst zurecht kommen können
grüße -
Du könntest ja auch die Wörter (vorrausgesetzt es ist mit Leerzeichen von anderen getrennt) mit explode voneinander trennen und dann wieder einige, z.B. 5 wieder zusammenwerfen.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage