创建电话号码格式标准的PHP

时间:2010-04-20 13:17:07

标签: php user-input

在寻找通常格式化用户电话号码时,我找到了这个资源.... http://www.eyesis.ca/projects/formatphone.html

我想知道其他人是否有更好的解决方案。

2 个答案:

答案 0 :(得分: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;
} 

答案 1 :(得分:0)

他们一直试图让this进入Zend_Framework一段时间,但由于某些原因它没有为1.10做出决定。

就个人而言,除非有一个非常好的,完善的用于验证输入类型的库(似乎还没有用于PHP),我倾向于尽可能地清理字符串..

对于电话号码,我只是修剪空白,并提出一个相当简单的正则表达式来尝试保持通用(用“ - ”代替“ - ”等。)

请记住,当一些更好的东西出现时,你可能想要重写该方法中的逻辑以利用它!