Groups | Search | Server Info | Login | Register


Groups > de.comp.lang.php > #4953

Re: Ist hier noch jemand? str_replace multiple replacement

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>

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar


Thread

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