Mailinglisten-Archive |
> 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