Mailinglisten-Archive |
Hi,
> So SOLLTE es sein:
> $preg_url = array('~href=([\"\'])([^\\1]+)\\1~ui', // Ankers, Links
> '~action=([\"\'])([^\\1]+)\\1~i', // Actions (Forms)
> '~src=([\"\'])([^\\1]+)\\1~ui'); // Images
Mit dem Pattern-Modifier 'u' hatte ich auch schon meine Probleme.
Folgende Tipps:
- Setze nur den Quantifizierer auf ungreedy, der auch ungreedy sein
sollte (mit "?")
- Prüfe, ob sich die href/action/src innerhalb eines Tags befinden.
Auch wenn es etwas mehraufwand bedeutet, würde ich sogar spezifisch
sämtliche Tags (<a, <form, ..) erwähnen, damit Du wirklich nur die
gewünschten Tags matchst.
Das hier funktioniert bei mir wunderbar:
<?php
header("Content-type: text/plain\n\n");
preg_match("/<.*?href=([\"\'])([^\\1]*?)(\\1).*?>/i",
"<a href=\"foo.html\" target=\"_blank\">",
$matches);
var_dump($matches);
?>
Wobei man natürlich /is und preg_match_all für mehrere Matches
benötigen würde :)
-daniel
php::bar PHP Wiki - Listenarchive