String (a) von (aa) bis (ab) durchsuchen
Simsso
- php
Hallo,
ich hab eine Frage.
Wie kann ich mit PHP programmieren, dass in einem String (s) alles zwischen string (s1) und (s2) durch string (s3) ersetzt wird?
Gruß
@@Simsso:
nuqneH
ich hab eine Frage.
Ich auch …
Wie kann ich mit PHP programmieren, dass in einem String (s) alles zwischen string (s1) und (s2) durch string (s3) ersetzt wird?
Was soll passieren, wenn (s1) oder (s2) mehrfach in (s) vorkommt? Soll alles zwischen dem ersten (s1) und dem letzten (s2) ersetzt werden?
Ich habe zwei Antworten:
(1) ersetzen mit regulärem Ausdruck
(2) Teile vor erstem (s1) und nach letztem (s2) auslesen und Ausgabestring zusammensetzen
Qapla'
@@Gunnar Bittersmann:
nuqneH
(2) Teile vor erstem (s1) und nach letztem (s2) auslesen
So wird das nichts. Da muss man wohl über die Position gehen und alles danach nehmen.
Und natürlich verdient keine der Funktionen die Bezeichnung Stringfunktion.
Es gibt sie aber alle als Stringfunktionen – jeweils mit mb_ davor: mb_strstr, mb_strrpos, mb_substr.
Diese sollte man verwenden, nicht die nutzlosen anderen Bytekttenverarbeitungsfunktionen.
Qapla'
Hi!
(2) Teile vor erstem (s1) und nach letztem (s2) auslesen
Sind s1 und s2 eigentlich zwei Stück String oder zwei Positionsangaben?
Und natürlich verdient keine der Funktionen die Bezeichnung Stringfunktion.
Es gibt sie aber alle als Stringfunktionen – jeweils mit mb_ davor: mb_strstr, mb_strrpos, mb_substr.
Diese sollte man verwenden, nicht die nutzlosen anderen Bytekttenverarbeitungsfunktionen.
Die anderen reichen doch perfekt für Single-Byte-Encodings. Die generelle Empfehlung der Multi-Byte-Funktionen halte ich nicht für zwangsläufig zielführend, ohne dabei zu erwähnen, dass neben dem Lösen des aktuellen Problems ein eventuell sehr großer Umstellaufwand verbunden ist. Nur einen Teil der Aufgaben damit zu bearbeiten, bringt unter Umständen mehr Komplikationen als es eigentliche Probleme löst. Außerdem ist der Umstellaufwand beim Umstieg auf Version 6 noch einmal vorhanden, wenn die gewöhnlichen Stringfunktionen mehrbytefähig und die mb-Funktionen überflüssig werden. Weiterhin reicht es nicht, einfach die mb-Funktionen zu verwenden, mann muss auch noch angeben, mit welcher Kodierung sie arbeiten sollen, sonst ist es nämlich auch nicht besser als Byte-Funktionen auf Mehrbyte-Kodierungen loszulassen.
Also erstmal klären, welche Kodierung vorliegt und ob sich der Aufwand eines Umstiegs lohnt.
Lo!