2012-09-29 37 views
0

我是全新的PHP,所以,如果这是一个简单的问题,请原谅我,但我无法真正弄清楚如何使用preg_replace从括号中删除括号在我的电话号码中输入区号并在区号和前3个数字之间加上一个短划线。从电话号码中删除括号并使用preg_replace添加短划线

现在我所有的电话号码都以这种格式分别存储在每个人员数组中(索引文件中):(800) 111-1111

我想让他们像这样打印出来:800-111-1111我想让这一切都发生在我的Person类的setphoneNumber函数中。

这里是代码如下:

$this-> phoneNumber = $phoneNumber; 
$pattern = ('/\D+/'); 
$replacement = ''; 
if(is_string($phoneNumber)) { 
    return preg_replace($pattern, $replacement, $this -> phoneNumber); 
} else { 
    user_error("Error: Person's phone number must be a string"); 
} 

,我做给它的任何修改或者给我的偏移误差或没有结束符错误无与伦比的括号(当我设置$pattern(')'发生);

任何帮助将不胜感激。

谢谢大家!

回答

0

如果初始格式始终是相同的,我不会刻意限定用于替换或者图案

试试这个变量:

preg_replace(array("(",") "),"", $this->phoneNumber); 
+0

出于某种原因,我仍然在取代它后得到无结尾匹配分隔符')'的错误。 –

0

如何这样的事情,布莱恩?

$pattern = array('/\(/', '/\) /'); 
$replacement = array('', '-'); 
if(is_string($phoneNumber)) { 
return preg_replace($pattern, $replacement, $this -> phoneNumber); 
} 

使用期间它不占人在一个连字号,虽然替代的(如800.111.1111)...但它不会采取了一大堆更使它函数,该函数以及。你只是想削减所有多余的部分,然后确保你用空格而不是连字符替换第一个句点(区号和下一个数字区段之间),就像你对剩下的时段所做的那样。

UPDATE:

我没有测试过这种广泛的,但这应该对你以后的工作,以及适应使用小数电话号码格式的人(即800.111.1111)。

$pattern = array('/ /','/[(](.*)[)](.*)(-)(.*)/','/(.*)(\.)(.*)(\.)(.*)/'); 
$replacement = array('','$1-$2-$4','$1-$3-$5'); 
if(is_string($phoneNumber)) { 
return preg_replace($pattern, $replacement, $this -> phoneNumber); 
}