phpbar.de logo

Mailinglisten-Archive

[php] 1/2 OT: Reguläre Ausdrücke

[php] 1/2 OT: Reguläre Ausdrücke

Roland Tapken php_(at)_phpcenter.de
Fri, 31 May 2002 14:41:42 +0200


Hi!

Ich bräuchte mal ein bisschen Hilfe... ich schreibe zur Zeit an einem
Parser, der alle URLs aus einer Datei ausliest. Ich arbeite mit einem
Array, dass die verschiedenen Ausdrücke enthält.

So SOLLTE es sein:
$preg_url = array('~href=([\"\'])([^\\1]+)\\1~ui', // Ankers, Links
                  '~action=([\"\'])([^\\1]+)\\1~i', // Actions (Forms)
                  '~src=([\"\'])([^\\1]+)\\1~ui'); // Images

Dieser Ausdruck (das [^\\1]) funktioniert jedoch nicht wie gewünscht. Wenn
ich statt dessen .+ einsetze (deshalb das ungreedy), dann wird zum
Beispiel bei
<a href="test.php" target="_blank"> alles bis zum ">" erkannt.

Im Moment verwende ich deshalb Freizeichen als Trennung:
$preg_url = array('~href=([\"\'])([^ ]+)\\1~ui', // Ankers, Links
                  '~action=([\"\'])([^ ]+)\\1~i', // Actions (Forms)
                  '~src=([\"\'])([^ ]+)\\1~ui'); // Images

Funktioniert soweit auch ganz gut. Nun bin ich aber in die Situation
gekommen, einen JavaScript-Alert-Aufruf in einen Link zu packen, und da
macht das ganze natürlich Probleme. Außerdem bin ich mir nicht sicher ob
(unkodierte) Freizeichen in URLs wirklich nicht erlaubt sind. Gibt es
einen Ausdruck der genau das tut was ich vom ersten eigentlich erwarte?

cu, Roland Tapken
-- 
Please reply to:  tapken_(at)_engter.de
PGP Public Key: http://www.engter.de/~tapkenea/gnupg_roland.txt
  ~~~ I'm a signature-virus. Please copy me into your sig. ~~~


php::bar PHP Wiki   -   Listenarchive