Сделайте Preg_match, затем проверьте каждую опцию индивидуально - PullRequest
1 голос
/ 27 сентября 2019

Добрый день, все,

Я застрял в этой проблеме уже несколько дней и наконец решил, что мне нужна помощь.Каждый раз, когда я делаю 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 впередиесли он действительно отображает результат, если он не отображает его, но независимо от того, сколько разных способов я пробую, я не могу найти способ достичь этого.

Спасибо за вашу помощь всем.

1 Ответ

1 голос
/ 27 сентября 2019

Я бы просто добавил 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>"; 
}  
...