strrchr suche nach string NICHT EINZELNES ZEICHEN
Nicole
- php
Hallo erst mal ;-)
Gibt es eine einfache Möglichkeit um nach dem
letzten Vorkommen eines Strings(NICHT ZEICHEN) zu suchen?
String:
$str="New Mess 12344 Test New Mess Test2 New Mess Nordpol";
Gewünschter String:
$str2="New Mess Nordpol";
Beispiel 1
strrchr($str,"NEW MESS");
// AUSGABE: Nordpol
Beispiel 2
strstr($str,"NEW MESS");
// AUSGABE: New Mess 1234
DAS PROBLEM:
Die Funktion strrchr() such immer nur nach einem
Zeichen nicht nach einer Wortkette.
Sicher ich könnte den String weiter zerlegen
und so den gewünschten String rausfiltern,
Aber gibts keine einfache Möglichkeit, so
wie strstr(), nur eben nicht erstes Vorkommen, sondern
letztes Vorkommen vom Suchstring.
Gruss Nikki
Hi,
ich habe gerade mal selfphp.info gschaut aber nichts passendes gefunden.
Schau am besten selbst einmal:
http://www.selfphp.info/funktionsuebersicht/string_funktionen.php
strpos findet das erste Vorkommen einer Zeichenkette.
strrpos findet laut selfphp nur das letzte Zeichen.
Aber versuchs einfach auch mal mit ner Zeichenkette.
Gruß
Christian
Moin!
Hallo erst mal ;-)
Gibt es eine einfache Möglichkeit um nach dem
letzten Vorkommen eines Strings(NICHT ZEICHEN) zu suchen?
Nein, scheinbar nicht. PHPs eingebaute Stringfunktionen erlauben es nur, ganze Strings von vorne aus suchen zu lassen, und von hinten nur einzelne Zeichen.
Du mußt dir also eine eigene Funktion zusammenstricken.
Lösungsansätze:
Mit strrev() kannst du Strings umdrehen. Wenn du needle und haystack umdrehst und dann von vorne suchst (strstr() oder strpos(), wie gewünscht), und dann die Position ebenfalls wieder umrechnest auf den Vorwärts-String, solltest du die gewünschte Information kriegen können.
Wahlweise kannst du natürlich auch solange von vorne in Teilstrings suchen, bis du keine Ergebnisse mehr findest. Das ist dann offenbar das letzte Ergebnis. Hier bietet es sich durchaus an, eine rekursive Funktion zu benutzen, aber man kann es auch iterativ lösen.
Wenn's auf Performance ankommt, mußt du mal testen, welche Variante schneller ist. Ich vermute, der erste Vorschlag ist schon sehr gut.
- Sven Rautenberg
Hallo Sven,
Lösungsansätze:
Mit strrev() kannst du Strings umdrehen. Wenn du needle und haystack umdrehst und dann von vorne suchst (strstr() oder strpos(), wie gewünscht), und dann die Position ebenfalls wieder umrechnest auf den Vorwärts-String, solltest du die gewünschte Information kriegen können.
Na so gehts auch nicht ganz, beim Umdrehen des
strings findet needle natürlich dahinter nichts
mehr zum Anzeigen.
Aber wollte auch nur wissen ob es nicht eine
vordefinierte Funktion wie strstr() gibt.
Ist sonst immer ärgerlich wenn man was selber
zusammenstrickt und dann irgenwann sieht:"Hätte
so einfach sein können";-) Hatte ich als ich
array_merge nomals selbst erfunden hatte;-)
Na ja, da es das nicht gibt,
löse ich dies mit explode und lasse mir mit end()
das letzte element anzeigen, natürlich indem ich den
Trennbegriff wieder zufüge.
Danke
Nikki
Hallo,
Gibt es eine einfache Möglichkeit um nach dem
letzten Vorkommen eines Strings(NICHT ZEICHEN) zu suchen?
Die Funktion strrpos() gibt die Position des Suchstrings (ab 0) von rechts aus.
MfG, Thomas
Moin!
Gibt es eine einfache Möglichkeit um nach dem
letzten Vorkommen eines Strings(NICHT ZEICHEN) zu suchen?Die Funktion strrpos() gibt die Position des Suchstrings (ab 0) von rechts aus.
Aber leider: "Note that the needle in this case can only be a single character. If a string is passed as the needle, then only the first character of that string will be used."
- Sven Rautenberg