Tom: strstr, Problem, schneiden alles weg weg kein Zeichen da ist

Beitrag lesen

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

--
 ☻_
/▌
/ \ Nur selber lernen macht schlau
Die ultimative Seite für Selbermacher