Preg_Match PHP脚本无法正常工作

时间:2015-08-04 11:40:10

标签: php regex

我一直在参考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';
}

我做错了你能告诉我吗?感谢您的高级帮助。

2 个答案:

答案 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语法。