По первому вопросу:
preg_replace('/[0-9]/', '#', $number)
или '/\d/'
По второму вопросу это может помочь вам:
$areaCode = substr(preg_replace('/[^\d]/', '', $number),0 , 3);
Это будетдать вам первые 3 цифры номера, отбросив все остальные символы.
Я не знаком с форматом кодов городов США, поэтому не могу вам больше помочь с этим.
Бонус:
if (in_array($number, $formats)) {
return true;
} else {
return false;
}
эквивалентен
return in_array($number, $formats);
Фактически любое утверждение в форме
if(<expression>){
return true;
}
else{
return false;
}
можетзаписывается как return (bool) <expr>;
, но в этом случае in_array
всегда будет возвращать логическое значение, поэтому (bool)
не требуется.