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