2010-04-20 6 views

Répondre

4
function formatPhone($string) 
{ 
    $number = trim(preg_replace('#[^0-9]#s', '', $string)); 

    $length = strlen($number); 
    if($length == 7) { 
     $regex = '/([0-9]{1})([0-9]{3})([0-9]{3})([0-9]{4})/'; 
     $replace = '$1-$2'; 
    } elseif($length == 10) { 
     $regex = '/([0-9]{3})([0-9]{3})([0-9]{4})/'; 
     $replace = '($1) $2-$3'; 
    } elseif($length == 11) { 
     $regex = '/([0-9]{1})([0-9]{3})([0-9]{3})([0-9]{4})/'; 
     $replace = '$1 ($2) $3-$4'; 
    } 

    $formatted = preg_replace($regex, $replace, $number); 

    return $formatted; 
} 
0

Ils ont essayé d'obtenir this dans Zend_Framework pendant un certain temps, mais il n'a pas fait la coupe pour 1.10 pour une raison quelconque.

Personnellement, à moins d'une très bonne, une bibliothèque bien établie pour valider les types d'entrée (il ne semble pas être un pour PHP encore), je tends à juste nettoyer la chaîne autant que possible ..

Pour les numéros de téléphone, je supprime simplement les espaces et je crée une regex assez simple pour essayer de garder les choses universelles (remplacer "." Par "-", etc.). Gardez à l'esprit cependant que lorsque quelque chose de mieux se présentera, vous voudrez probablement réécrire la logique à l'intérieur de cette méthode pour en profiter!

Questions connexes