首页 > 解决方案 > 做一个 Preg_match 然后单独检查每个选项

问题描述

大家下午好,

我已经被这个问题困扰了好几天了,我终于决定我需要一些帮助。每次我像这样进行 Pregmatch :

$regp = "/(\s*)(\s*\(?0\d{4}\)?(\s*|-)\d{3}(\s*|-)\d{3}\s*)|(\s*\(?0\d{3}\)?(\s*|-)\d{3}(\s*|-)\d{4}\s*)|(\s*(7|8)(\d{7}|\d{3}(\-|\s{1})\d{4})\s*)/";
preg_match_all($regp, $html[1], $phonematch, PREG_SET_ORDER, 0);  
foreach($phonematch as $resultp) {
    echo $resultp[0];  
    echo "</br>"; 
}  

我确实得到了我需要的结果,但我现在需要做的是一个 if 语句,它检查每个语句是否在前面包含一个 0,然后如果它确实显示结果,如果它不显示它,但无论我尝试了多少不同的方法,我似乎都找不到实现这一目标的方法。

谢谢大家的帮助。

标签: phppreg-match

解决方案


我只是substr()在循环中添加,或者如果您想完全跳过它,那么只需在您的正则表达式的开头添加 0

$regp = "/(\s*)(\s*\(?0\d{4}\)?(\s*|-)\d{3}(\s*|-)\d{3}\s*)|(\s*\(?0\d{3}\)?(\s*|-)\d{3}(\s*|-)\d{4}\s*)|(\s*(7|8)(\d{7}|\d{3}(\-|\s{1})\d{4})\s*)/";
preg_match_all($regp, $html[1], $phonematch, PREG_SET_ORDER, 0);  

foreach($phonematch as $resultp) {
    if (substr($resultp[0], 0, 1) !== '0') {
       continue;
    }

    echo $resultp[0];  
    echo "</br>"; 
}  

推荐阅读