Tom: Regular Expressions, negative lookbehind assertion

Beitrag lesen

Hello Christian,

Wenn Lookahead-Assertions bei Dir nicht funktionieren, dann machst Du etwas falsch.

Ich habe mich an diesem Beispiel festgebissen und kriege es einfach nicht raus, was daran verkehrt ist. Es sollen alle Hyperreferenzen gefunden werden, die _kein_ 'javascript:' enthalten.

$pattern = '#<(a|area)\s[^>]*href=("|')?(?<!javascript:)(.*)\2.*>#Ui';

Leider sind sie dann doch immer drin.

Als Testbeispiel:

<?php

$source = file_get_contents('http://harzflirt.de');
  $pattern = '#<(a|area)\s[^>]*href=("|')?(?<!javascript:)(.*)\2.*>#Ui';
  preg_match_all($pattern, $source, $_hits);

echo "<pre>\n";
  echo htmlspecialchars(print_r($_hits,1));
  echo "</pre>\n";

?>

Wäre toll, wenn Du mir den Fehler sagen könntest.

Harzliche Grüße vom Berg und Frohe Weihnachtszeit

Tom

--
Nur selber lernen macht schlau