Groups | Search | Server Info | Keyboard shortcuts | Login | Register
Groups > de.comp.lang.php > #4952
| From | Detlef Paschke <schabau@t-online.de> |
|---|---|
| Newsgroups | de.comp.lang.php |
| Subject | Re: Ist hier noch jemand? str_replace multiple replacement |
| Date | 2024-11-05 10:03 +0100 |
| Message-ID | <vgcn02$6n4u$1@solani.org> (permalink) |
| References | <vgavv1$5s7v$1@solani.org> <1t67294ef1i26d911n3e8%sfroehli@Froehlich.Priv.at> |
Am 04.11.2024 um 23:56 schrieb Stefan Froehlich:
> On Mon, 04 Nov 2024 18:23:47 Detlef Paschke wrote:
>> [Funktioniert, braucht aber 2 Aufrufe]
>> str_replace(['../', './'], '', str_replace('\\', '/', $datei));
>
>> [Funktioniert nicht]
>> str_replace(['./', '../', '\\'], ['','','/'], $datei)
>
> ...
>
> Aber natürlich geht es auch in der eleganteren Version, Du musst nur
> aus hoffentlich naheliegenden Gründen sicherstellen, dass ../ *vor
> ./ ersetzt wird.
Stimmt danke, im eigentlichen Script ist es auch richtig herum, in der
"Test.php" habe ich es korrigiert. Da war mir der Fehler noch gar nicht
aufgefallen.
>> Mit preg_replace geht es so, wie ich es mir vorstelle, doch so
>> kann ich es kaum noch lesen.
>
>> 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 funktioniert ja auch ganz schick mit den preg_replace Varianten, aber
es ist so fürchterlich zu lesen für mich.
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. :-)
> Servus,
> Stefan
Viele Grüße
Detlef Paschke
--
Das "Zitat des Augenblick" gibt es nur auf:
https://schabau.eu
Meine "Merkzettel" findet man unter:
https://helpdesk.schabau.eu
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