Groups | Search | Server Info | Login | Register
Groups > de.comp.lang.php > #4954
| 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 12:38 +0100 |
| Message-ID | <vgd03m$ghr6$1@solani.org> (permalink) |
| References | <vgavv1$5s7v$1@solani.org> <1t67294ef1i26d911n3e8%sfroehli@Froehlich.Priv.at> <vgcn02$6n4u$1@solani.org> <3t6729ebcfi28f81an3e8%sfroehli@Froehlich.Priv.at> |
Am 05.11.2024 um 10:59 schrieb Stefan Froehlich:
> On Tue, 05 Nov 2024 10:03:00 Detlef Paschke wrote:
>> Am 04.11.2024 um 23:56 schrieb Stefan Froehlich:
>> 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.
In keiner Weise. Mit preg_replace funktioniert es wie ich es mir
vorstelle, ist aber schwerer zu lesen. Mit str_replace geht es nur
nacheinander oder wenn das replace Arrays und das search Array die selbe
Anzahl an Werten haben.
$datei = './folder\file.txt ODER ../folder\file.txt';
echo '<p>str_replace (./folder\file.txt ODER ../folder\file.txt)</p>';
var_dump(str_replace(['../', './'], '', str_replace('\\', '/', $datei)));
Die ursprüngliche, derzeit verwendete und funktionierende Variante. Die
wollte ich gern in ein str_replace "zusammenschieben".
var_dump(str_replace(['../', './', '\\'], ['', '', '/'], $datei));
Die Variante funktioniert, aber es sind im search und replace Array die
selbe Anzahl von Werten. Die Werte '../' und './' haben den gleichen
replace Wert. Ich hätte ja gern, dass sie den selben haben.
echo '<p>str_replace WUNSCH';
var_dump(str_replace([('../' | './'), '\\'], ['', '/'], $datei));
Meine Wunschvorstellung mit ODER Verknüpfung für den ersten Wert im
search Array, die beide auf den ersten Wert des replace Array zutreffen
sollen. Funktioniert nur für den zweiten Teil. Nur \ wird gegen /
ausgetauscht.
echo '<p>preg_replace (./folder\file.txt ODER ../folder\file.txt)</p>';
var_dump(preg_replace(['/(\.\/|\.\.\/)/', '/(\\\\)/'], ['', '/'], $datei));
var_dump(preg_replace(['#\.\.?/#', '#\\\\#'], ['', '/'], $datei));
var_dump(preg_replace(['#\.+/#', '#\\\\#'], ['', '/'], $datei));
Die Varianten mit preg_replace, die alle funktionieren. Meine erste
Variante mit ODER, dein Vorschlag und ein von mir daraufhin
abgeleiteter, der wohl auch bei .....\ greifen würde, was hier aber
keine Rolle spielt.
> 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.
Das ist ja nun behoben und betraf auch nur meine bastel Datei.
> Löse Dich von der Oder-Verknüpfung und ersetze gedanklich einen
> Teilstring nach dem anderen, immer mit dem längsten beginnend.
Ganz gebe ich noch nicht auf, manchmal muss man nur das richtige
Suchwort bei google haben und findet was man schon ewig sucht. :-)
> 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