Path: csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Arno Welzel Newsgroups: de.comp.lang.php Subject: Re: Ist hier noch jemand? str_replace multiple replacement Date: Fri, 8 Nov 2024 17:29:11 +0100 Lines: 42 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Trace: individual.net S3KJb8BI3soTjsb9tMzSXwzzHwMW3ojybd5u8TeXWkwaxwuqLV Cancel-Lock: sha1:GMtPkSMB+TB+KInI3g44E5rEyaY= sha256:sYmOw/I3A/zrVRLwz8rQTAXfTkUWNvzvbXJ5utfDeeg= Content-Language: de-DE In-Reply-To: Xref: csiph.com de.comp.lang.php:4960 Detlef Paschke, 2024-11-08 11:25: > Am 07.11.2024 um 17:31 schrieb Arno Welzel: >> Detlef Paschke, 2024-11-04 18:23: >> >> >> [...] >>> So funktioniert es zwar, aber schön ist das auch nicht. >>> >>> str_replace(['./', '../', '\\'], ['','','/'], $datei) >> >> Was ist daran "nicht schön?". > > Schöner fände ich das Ersetzungs-Array so, ['','/'] wie es bei > preg_replace in allen Varianten geht. In einer Variante eben auch mit Nein, preg_replace() arbeitet auch nicht so. Zitat aus : If there are fewer elements in the replacement array than in the pattern array, any extra patterns will be replaced by an empty string. (Zitat Ende) Das wäre dann für ['', '/'] als replacement: './' --> ''; '../' --> '/'; '\\' --> ''; Denn ab dem 3. Suchmuster wird nur '' als Ersetzung verwendet. > logischen ODER Operator, ['/(\.\/|\.\.\/)/', '/(\\\\)/'] und ich hoffte, > dass sich das auf str_replace übertragen lässt. Dem ist aber wohl nicht so. Nein, genau deswegen gibt es ja preg_replace(), weil das "oder" halt ein Teil des regulären Ausdrucks wäre. -- Arno Welzel https://arnowelzel.de