我有一堆电话号码要排序,我正在尝试使用正则表达式来识别电话号码,并将它们与已混入的垃圾数据分开。为实现这一点,我正在使用preg_match()
模式如下:
$pattern = '/(\(?\d{3}\)?\s*[\-\.]?\s*\d{3}\s*[\-\.]?\s*\d{4})/';
尽管正则表达式被/
括起来,preg_match()
正在将正则表达式的一部分标识为修饰符,但返回错误:
未知修饰符']'
为什么preg_match()
忽略分隔符并将]
解释为修饰符?
以下是上下文:
$pattern = '/(\(?\d{3}\)?\s*[\-\.]?\s*\d{3}\s*[\-\.]?\s*\d{4})/';
$matches;
while($record = mysqli_fetch_array($result)){
$tel = $record['PHONENUMBER'];
$tel_count++;
if(strlen($tel) >= 7){
preg_match($pattern, $tel, $matches);
$valid_tel_count += sizeof($matches);
if(sizeof($matches) > 1){
$overpacked_tel_count++;
}
for($i = 0; $i < sizeof($matches); $i++){
//echo($matches[$i].'; ');
}
//echo('<br />');
}
else{
$invalid_tel_count++;
if(strlen($tel) == 0 || $tel == ''){
$empty_tel_count++;
}
else{
var_dump($tel);
echo('<br />');
}
}
}