PHP preg_match:这个变量(67278)如何运行preg_match?

时间:2016-11-08 11:37:38

标签: php

Ex:67278

如何使用preg_match ???

执行此操作

如何通过preg_match获取此信息?

 $data = '<script>fcGetPlayerInsights("67278")</script>)';

 preg_match("/tr\('(.*?)'/",$data,$match);
 print_r($match);

3 个答案:

答案 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"))到正则表达式,这样更安全。

http://www.phpliveregex.com/p/hNO

答案 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