Как сопоставить URL-адрес внутри комментария HTML с регулярными выражениями? - PullRequest
0 голосов
/ 01 июля 2010

Я делаю автоматический скрипт на PHP, чтобы проверить, существует ли моя ссылка на веб-сайте моего партнера (обмен ссылками). Помимо того, чтобы убедиться, что моя ссылка существует в исходном коде, я хочу убедиться, что он не размещает ее вHTML-комментарий, такой как <!-- http://www.mywebsite.com --> и изменяющий мне ..

Я пытался сопоставить его с REGEXP, но не смог

Ответы [ 2 ]

3 голосов
/ 01 июля 2010

Используйте DOM и XPath, он игнорирует комментарии:

$doc = new DOMDocument();
$doc->loadHTML($htmlstring);

$xpath = new DOMXPath($doc);

$result = $xpath->query('//a[contains(@href, "mywebsite.com")]');

if (!$result->length) echo "You've been cheated\n";

И затем, если вы все еще хотите знать, закомментирован ли ваш сайт

if (strpos($htmlstring, 'mywebsite.com') !== false && !$result->length)
   echo "Your partner is hiding your link in a comment, sneaky bastard\n";
1 голос
/ 01 июля 2010

Звучит как идеальное использование для парсера HTML, например DOMDocument->loadHTML(), и ищите тег привязки с вашей ссылкой. Он все еще может удалить его через javascript на стороне браузера, но это другая проблема.

Если это игра в кошки-мышки "показываешь ли ты ссылку на мой сайт", то лучше всего использовать стандартный парсер. Существует слишком много способов для срыва регулярного выражения в html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...