phpbar.de logo

Mailinglisten-Archive

preg_replace() Bug?

preg_replace() Bug?

Cybot 4t2.com-mysql at tekkno4u.de
Die Jul 15 16:50:18 CEST 2003


> kann mir jemand sagen ob folgendes Problem bekannt ist? Sowohl die Funktion preg_replace() als auch ereg_replace() führen strtoupper() als Replacevalue nicht aus. Ich erwarte eine großen TIGER.
> Ich habe auf bugs.php.net nichts entsprechendes gefunden.
> Wird produziert von der php.exe der Version 4.3.1 unter Windows 2000 SP3 (Windows NT 5.0 build 2195).
> 
> <?php
> echo preg_replace("|(.*)|", md5('\\1'), "hase")."<br>";
> echo preg_replace("|(.*)|", strtoupper('\\1'), "tiger")."<br>";
> 
> echo ereg_replace("(.*)", md5('\\1'), "hase")."<br>";
> echo ereg_replace("(.*)", strtoupper('\\1'), "tiger")."<br>";
> ?>
> 
> Ergebnis:
> 
> b5101eb6e685091719013d1a75756a53b5101eb6e685091719013d1a75756a53
> tiger
> b5101eb6e685091719013d1a75756a53b5101eb6e685091719013d1a75756a53
> tiger

normal so als hinweiß: es ist egal welches wort du in den befehl
echo preg_replace("|(.*)|", md5('\\1'), "hase")."<br>";

einträgst, ob 'hase', 'hund' oder 'schwein'

als ergebnis kommt immer
'b5101eb6e685091719013d1a75756a53b5101eb6e685091719013d1a75756a53'

nämlich zweimal der md5 von '\\1'!

also das selbe wie
echo md5('\\1') . md5('\\1');

dein fehler scheint also irgendwo andrs zu liegen als da das 
(p/e)reg_replace nicht mit den rückgabewerten arbeitet

>>$str = preg_replace( '/(.*)/msieU', 'strtoupper("\\1")', $str )
>>
>>So würde das gehen, allerdings ist es zumindest bei diesem 
>>Match sinnlos
>>preg_replace zu nehmen, denn ein $str = strtoupper( $str ) tut es
>>genauso :)

dein (ausschlaggebender) unterschied zu diesem funktionierenden beispiel 
sind also " bzw. ' um strtoupper() und die option e

so funktionierts also:

echo preg_replace("|(.*)|e", "md5('\\1')", "hase")."<br>";
echo preg_replace("|(.*)|e", "strtoupper('\\1')", "tiger")."<br>";

-- 
Sebastian Mendel

www.sebastianmendel.de
www.tekkno4u.de
www.nofetish.com

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive