如何将HTML注释中的URL与正则表达式匹配?

时间:2010-07-01 19:09:23

标签: regex

我正在使用PHP创建一个自动脚本来检查我的链接是否存在于我的合作伙伴网站(链接交换)..除了确保我的链接存在于源代码中之外,我想确保他没有放入它像<!-- http://www.mywebsite.com -->这样的HTML评论并欺骗我..

我尝试将其与REGEXP匹配,但失败了

2 个答案:

答案 0 :(得分:3)

使用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 :(得分:1)

听起来像是DOMDocument->loadHTML()这样的HTML解析器的完美用法,并查找带有链接的锚标记。他仍然可以通过浏览器端的javascript删除它,但这是一个不同的问题。

如果这是一个猫捉老鼠的游戏“你是否正在显示我的网站的链接”,使用标准解析器是你最好的选择。 html上有太多ways for a regex to fail