我正在使用PHP创建一个自动脚本来检查我的链接是否存在于我的合作伙伴网站(链接交换)..除了确保我的链接存在于源代码中之外,我想确保他没有放入它像<!-- http://www.mywebsite.com -->
这样的HTML评论并欺骗我..
我尝试将其与REGEXP匹配,但失败了
答案 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。