Ex:67278
如何使用preg_match ???
执行此操作如何通过preg_match获取此信息?
$data = '<script>fcGetPlayerInsights("67278")</script>)';
preg_match("/tr\('(.*?)'/",$data,$match);
print_r($match);
答案 0 :(得分:1)
我不建议使用html上的正则表达式,除非这是唯一的方法......
但是:
if(preg_match("/(\d{5})/", $data)){
echo "a five digit number is there";
}else{
echo "there is no five digit number";
}
可以工作..
不过,我建议您至少在$ data上使用strip_tags
。
if(preg_match("/(\d{5})/", strip_tags($data))){
echo "a five digit number is there";
}else{
echo "there is no five digit number";
}
从字符串中删除html,只留下fcGetPlayerInsights("67278"))
到正则表达式,这样更安全。
答案 1 :(得分:0)
有了T-Regx,您可以进行以下操作:
$data = '<script>fcGetPlayerInsights("67278")</script>)';
$result = pattern('fcGetPlayerInsights\("\d+"\)')->match($data)->all();
print_r($result);
答案 2 :(得分:-3)
您应该使用html文档解析器来隔离脚本标签,以确保稳定性,然后将正则表达式模式应用到所有符合条件的标签的完整内部html上,如果您只希望找到一个匹配项,则可以在找到所需的子字符串后中断。
代码:(Demo)
$html = <<<HTML
<script>fcGetPlayerInsights("67278")</script>
<p>TEST</p><ul><li>1</li><li>fcGetPlayerInsights("24569")</li><li>3</li></ul>
HTML;
$dom = new DOMDocument;
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('script') as $script) {
if (preg_match('~^fcGetPlayerInsights\("(\d+)"\)$~', $script->nodeValue, $match)) {
echo $match[1];
break;
}
}
输出:
67278