Groups | Search | Server Info | Login | Register
Groups > de.comp.lang.php > #4953
| From | Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) |
|---|---|
| Newsgroups | de.comp.lang.php |
| Subject | Re: Ist hier noch jemand? str_replace multiple replacement |
| Date | 2024-11-05 09:59 +0000 |
| Message-ID | <3t6729ebcfi28f81an3e8%sfroehli@Froehlich.Priv.at> (permalink) |
| References | <vgavv1$5s7v$1@solani.org> <1t67294ef1i26d911n3e8%sfroehli@Froehlich.Priv.at> <vgcn02$6n4u$1@solani.org> |
On Tue, 05 Nov 2024 10:03:00 Detlef Paschke wrote:
> Am 04.11.2024 um 23:56 schrieb Stefan Froehlich:
>>> preg_replace(['/(\.\/|\.\.\/)/', '/(\\\\)/'], ['', '/'], $datei);
>> Hier funktioniert es unabhängig von der Reihenfolge, da reguläre
>> Ausdrücke immer den längsten Match suchen. Die Auswahl zwischen .
>> und .. ließe sich allerdings auch einfacher treffen, die Klammern um
>> das Pattern sind unnötig, und für den Delimiter empfiehlt sich in
>> diesem Fall ein anderes Zeichen. Ich würde etwas lesbarer schreiben:
>> preg_replace(['#\.\.?/#', '#\\\\#'], ['', '/'], $datei);
> Mein Beweggrund ist, was bis jetzt nur mit diesen blöden regulären
> Ausdrücke und preg_replace funktioniert, mit str_replace
> hinzubekommen.
Es dürfte durchaus sinnvoll sein, reguläre Ausdrücke nur dort zu
verwenden, wo sie auch erforderlich sind. Trotzdem schadet es nicht,
sie lesbar zu formulieren :)
> Ganz primitiv übersetzt:
> Array1('../' ODER './', '\'), Array2('', '/')
> Und genau diesen ODER Teil, dass ../ ODER ./ zu '' wird, also
> gelöscht werden sollen, bekomme ich mit str_replace nicht hin. Und
> das in so einem hübschen kleinen Einzeiler. :-)
Wieso? Inzwischen sollte das ja klappen.
Du musst Dir halt vergegenwärtigen, dass Deine Oder-Verknüpfung
einen logischen Fehler enthält: Jeder String, der '../' enthält,
enthält automatisch auch './', und sobald Du letzteres durch den
Leerstring ersetzt, bleibt Dir ein unerwünschter Punkt übrig.
Löse Dich von der Oder-Verknüpfung und ersetze gedanklich einen
Teilstring nach dem anderen, immer mit dem längsten beginnend.
Servus,
Stefan
--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike
Stefan - die vollkommenste Nuance von selig!
(Sloganizer)
Back to de.comp.lang.php | Previous | Next — Previous in thread | Next in thread | Find similar
Ist hier noch jemand? str_replace multiple replacement Detlef Paschke <schabau@t-online.de> - 2024-11-04 18:23 +0100
Re: Ist hier noch jemand? str_replace multiple replacement Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2024-11-04 22:56 +0000
Re: Ist hier noch jemand? str_replace multiple replacement Detlef Paschke <schabau@t-online.de> - 2024-11-05 10:03 +0100
Re: Ist hier noch jemand? str_replace multiple replacement Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2024-11-05 09:59 +0000
Re: Ist hier noch jemand? str_replace multiple replacement Detlef Paschke <schabau@t-online.de> - 2024-11-05 12:38 +0100
Re: Ist hier noch jemand? str_replace multiple replacement Detlef Paschke <schabau@t-online.de> - 2024-11-05 12:55 +0100
Re: Ist hier noch jemand? str_replace multiple replacement Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2024-11-05 12:19 +0000
Re: Ist hier noch jemand? str_replace multiple replacement Detlef Paschke <schabau@t-online.de> - 2024-11-05 15:27 +0100
Re: Ist hier noch jemand? str_replace multiple replacement Arno Welzel <usenet@arnowelzel.de> - 2024-11-07 17:31 +0100
Re: Ist hier noch jemand? str_replace multiple replacement Detlef Paschke <schabau@t-online.de> - 2024-11-08 11:25 +0100
Re: Ist hier noch jemand? str_replace multiple replacement Arno Welzel <usenet@arnowelzel.de> - 2024-11-08 17:29 +0100
csiph-web