Hello,
Ich möchte einen String ab einer bestimmten länge abschneiden.
$sting='hallo was ist # da los';
strstr($string, '#', true)
das klappt, nur wenn kein # im string ist, wir der ganze Sting weggeschnitten, wie kann ich das verhindern?
Alternativ kannst Du auch explode() benutzen
http://de2.php.net/manual/en/function.explode.php
und nicht nach sting, sondern nach springsteen suchen :-)
Je nachdem, ob Du nun nur den Teil ab dem letzten Vorkommen des Suchzeichens oder ab der ersten Position, o. auch anders, haben willst, nimmst Du entsprechend viele Arrayelemente des Ergebnisarrays wieder hinzu.
mit array_pop() kannst Du den Teil nach dem letzten Vorkommen, respektive den gesamten String, wenn das Zeichen gar nicht vorkam, erwarten.
http://de2.php.net/manual/en/function.array-pop.php
Wenn Du array_shift() auf das Ergebnisarray anwendest
http://de2.php.net/manual/en/function.array-shift.php
hast Du den Stringteil _vor_ dem ersten Vorkommen.
Wenn Du dem Ergebnisarray mit array_shift() das erste Element klaust und in den Mülleimer schmeißt, den Rest des Ergebnisarrays dann mit implode() wieder zusammenbaust, erhältst
Du den String _nach_ dem ersten Vorkommen,
http://de2.php.net/manual/en/function.implode.php
usw.
---------#----------#----------#----------
$teile = explode('#', $string);
[---------] [----------] [----------] [----------]
$ende = array_pop($teile);
----------
[---------] [----------] [----------] [----------]
[$trash = ] array_pop($teile);
[---------] [----------] [----------]
$vor_dem_letzten = implode('#', $teile);
---------#----------#----------
[---------] [----------] [----------] [----------]
$anfang = array_shift($teile);
---------
[---------] [----------] [----------] [----------]
[$trash = ] array_shift($teile);
[----------] [----------] [----------]
$nach_dem_ersten = implode ('#',$teile);
----------#----------#----------
Du siehst, dass man für die Teilung von Zeichenketten mit explode und den Array-Funktionen
* array_pop()
* array_shift()
* implode
eine Menge erreichen kann.
Denke nur vorher immer darüber nach, ob _Zeichenzählung_ in Frage kommt, denn dann muss sofort die Warnlampe für die Frage: Single-Byte-Codierung oder Multi-Byte-Codierung (z. B. UTF-8)? aufleuchten!
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg