Validade如果字符串包含一个正则表达式串
问题描述:
我有以下的字符串下面将其通过DOM Document
萃取:Validade如果字符串包含一个正则表达式串
$scripts = $doc->getElementsByTagName('script');
$script = $scripts->item($i);
$string = $script->getAttribute('src');// Save the string 'jquery-3.2.0.min.js'
我有3种方式,以检查是否该字符串是一个jquery:
jquery(?:\\-|\\.)([\\d.]*\\d)[^/]*\\.js\\;version:\\1
/([\\d.]+)/jquery(?:\\.min)?\\.js\\;version:\\1
jquery.*\\.js
在这种情况下,我如何使用这3个命令中的一个来验证上面的字符串?
答
的preg_match - 如果找到匹配它会打印出
Match found
执行正则表达式匹配
if (preg_match("/jquery.*\.js/",$string)) {
echo "Match found";
}
。 (我刚刚使用你的一个正则表达式字符串)
我还假设你提取的是$string
,因为很难说。
答
可以说是只链接到jQuery的lib中使用XPath很容易地选择脚本标签:
$xp = new DOMXPath($doc);
$nodeList = $xp->query('//script[.=""]/@src[contains(., "jquery")]');
foreach ($nodeList as $node) {
echo $node->nodeValue, PHP_EOL;
}
+2
好的解决方案,使用'DOMXPath' –
做一个简单的检查了 “jQuery的” 用'strpos'和检查节点是否为空。 *(也可以使用XPath完成)*。你不需要一个正则表达式。 –
标题和你的问题是不同的。 – Rahul
我想你正在寻找'preg_match()':http://php.net/preg_match – rickdenhaan