phpbar.de logo

Mailinglisten-Archive

preg_replace() Bug?

preg_replace() Bug?

Pascal Schult pascal.schult at grundvers.de
Die Jul 15 16:43:42 CEST 2003


Hallo Liste,

ich habe die Frage bereits in einer anderen Liste gestellt, aber leider keine mich befriedigende Antwort bekommen. Mir geht es nicht um dieses Beispiel, sondern um den Unterschied warum die eine methode ausgeführt wird, die andere aber nicht und ob dies ein Bug ist. Dieses Beispiel ist ansonsten ja sinnlos:

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
 
> $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 :)

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


php::bar PHP Wiki   -   Listenarchive