Saltar al contenido

Formateo de números de teléfono en PHP

Contamos con la mejor respuesta que hallamos en línea. Queremos que te resulte útil y si deseas comentarnos algún detalle que nos pueda ayudar a crecer hazlo libremente.

Solución:

Este es un formateador de teléfonos de EE. UU. que funciona en más versiones de números que cualquiera de las respuestas actuales.

$numbers = explode("n", '(111) 222-3333
((111) 222-3333
1112223333
111 222-3333
111-222-3333
(111)2223333
+11234567890
    1-8002353551
    123-456-7890   -Hello!
+1 - 1234567890 
');


foreach($numbers as $number)

    print preg_replace('~.*(d3)[^d]0,7(d3)[^d]0,7(d4).*~', '($1) $2-$3', $number). "n";

Y aquí hay un desglose de la expresión regular:

Cell: +1 999-(555 0001)

.*          zero or more of anything "Cell: +1 "
(d3)     three digits "999"
[^d]0,7  zero or up to 7 of something not a digit "-("
(d3)     three digits "555"
[^d]0,7  zero or up to 7 of something not a digit " "
(d4)     four digits "0001"
.*          zero or more of anything ")"

Actualizado: 11 de marzo de 2015 para usar 0,7 en vez de ,7

$data = '+11234567890';

if(  preg_match( '/^+d(d3)(d3)(d4)$/', $data,  $matches ) )

    $result = $matches[1] . '-' .$matches[2] . '-' . $matches[3];
    return $result;

Esta función formateará números de teléfono internacionales (más de 10 dígitos), no internacionales (10 dígitos) o de la vieja escuela (7 dígitos). Cualquier número que no sea 10+, 10 o 7 dígitos permanecerá sin formato.

function formatPhoneNumber($phoneNumber) 
    $phoneNumber = preg_replace('/[^0-9]/','',$phoneNumber);

    if(strlen($phoneNumber) > 10) 
        $countryCode = substr($phoneNumber, 0, strlen($phoneNumber)-10);
        $areaCode = substr($phoneNumber, -10, 3);
        $nextThree = substr($phoneNumber, -7, 3);
        $lastFour = substr($phoneNumber, -4, 4);

        $phoneNumber = '+'.$countryCode.' ('.$areaCode.') '.$nextThree.'-'.$lastFour;
    
    else if(strlen($phoneNumber) == 10) 
        $areaCode = substr($phoneNumber, 0, 3);
        $nextThree = substr($phoneNumber, 3, 3);
        $lastFour = substr($phoneNumber, 6, 4);

        $phoneNumber = '('.$areaCode.') '.$nextThree.'-'.$lastFour;
    
    else if(strlen($phoneNumber) == 7) 
        $nextThree = substr($phoneNumber, 0, 3);
        $lastFour = substr($phoneNumber, 3, 4);

        $phoneNumber = $nextThree.'-'.$lastFour;
    

    return $phoneNumber;

Reseñas y valoraciones

Nos puedes añadir valor a nuestro contenido informacional contribuyendo tu veteranía en las notas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *