我一直在参考PHP手册和其他网站来构建这个但是似乎无法使它工作,即使我已经检查了包含由Google外部托管的jquery文件链接的网站的来源,所以匹配应该是找到。
我确实检查了正则表达式,以确保它正确地获取HTML中的脚本链接,但它只是不想将它与我希望它匹配的$ sign(签名)匹配。
$regex = "/<script.+src=\"(.+)\"><\/script>/i";
$site = file_get_contents("http://phpcodechecker.com/");
$sign = 'jquery';
$sign = 'jQuery v2.1.3';
if (preg_match($regex, $site, $sign)) {
echo 'A match was found.';
} else {
echo 'A match was not found. boo boo';
}
我做错了你能告诉我吗?感谢您的高级帮助。
答案 0 :(得分:0)
这一行:
-T schema_name.table.*
应该是:
$site = 'file_get_contents("http://phpcodechecker.com/")';
您正在存储字符串$site = file_get_contents("http://phpcodechecker.com/");
,而不是实际运行'file_get_contents("http://phpcodechecker.com/")'
。
答案 1 :(得分:0)
您需要使用DOMDocument来解析HTML。以下是如何使用DOMXpath轻松获得所需内容:
$html = <<YOUR_HTML>>;
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$xpath = new DOMXPath($dom);
$scripts = $xpath->query('//script[@src]');
foreach($scripts as $script) {
echo $script->getAttribute('src') . PHP_EOL;
}
请参阅demo
注意未正确声明正则表达式,您需要删除"
并添加[^<]*
以允许标记内的内容:$regex = '/<script\b.*\bsrc="(.*?)"[^<]*>[^<]*<\/script>/i';
也许可以正常工作,但正则表达式不是正确的工具在这里然后,file_get_contents
出现问题(不需要引号)。此外,$sign
必须是数组&$matches
,并将其声明为字符串。查看preg_match语法。