Mailinglisten-Archive |
Marcel Kurz wrote: > Hallo, >> Da fehlt der "e"-Modifikator! >> Siehe: http://de3.php.net/manual/de/function.preg-replace.php Example#4 Die >> Verwendung des Modifikators 'e' > > hab das mal mit dem "e" Modifikator getestet aber irgendwie bekomme ich da > nur > Fehlermeldungen > > > $suchmuster = '/href="(.*?)"/e'; > $text = preg_replace($suchmuster, "/href=\"$1".(!stristr("$1","?")? "?" : > "&")."foo2=bar2\" ", $text); > > was ist flasch ? Mhh... jetzt wo ich mal genauer hinsehe... Auch mit Syntaxhighlighting fällt mir auf, dass dein Code generell nicht viel Sinn macht. Ich unterteile mal: $replacement="/href=\"$1".(!stristr("$1","?")?"?":"&")."foo2=bar2\" ", $text); Nun, was passiert hier? Erstens glaube ich, dass du dir nicht bewusst bist, dass php Strings in Anführungszeichen parst. Also --- $var ='Hello'; echo "$var world"; // --> Hello world echo "{$var} world"; // --> Hello world echo '{$var} world'; // --> {$var} world echo '$var world'; // --> $var world echo "\$var world"; // --> $var world --- Weil ich einfach mal vermute, dass bei dir $1 nicht gesetzt ist, passiert folgendes: echo $replacement; // --> /href="foo2=bar2" Ich glaube, dass dies nicht das ist, woran du dachtest. Ich glaube du willst von allen Links in deinem Dokument die Zieladresse haben. Da gebe ich dir den Tipp, denn ich hier in der Mailingliste am laufenden Band verteile und den am laufenden Band niemanden interessiert: Nimm die DOM. Es ist schneller und richtiger, was du da rausbekommst. Dieser Quelltext gibt dir von allen <a>-Tag in deinem String $text, die ein Attribut href haben den Inhalt des href-Tags aus: --- $text = ' <a href="foo.php">link1</a><br> <a href="foo.php?foo=bar">link2</a><br>'; $xml=new DOMDocument(); $xml->loadHTML($text); $xpath =new DOMXPath($xml); $result =$xpath->evaluate('//a[@href]'); foreach($result as $a) echo $a->getAttribute('href'),"\n"; --- > > beste grüße > marcel Yannik
php::bar PHP Wiki - Listenarchive