在我的PHP代码中,我可以使用
从电话号码中删除连字符和括号preg_replace('/\D+/', "", $cell);
OR
preg_replace('/[ )(.-]/', "", $cell);
两个问题:
(1)上述哪种格式最适合删除所有不需要的字符(, - ,等等,以及字母字符。
(2)如果用户输入,我还需要删除前导“1”(美国国家代码)
答案 0 :(得分:4)
有很多方法可以删除非数字,但我建议使用对您来说最有意义的方法,也就是说,当您再次查看代码时,哪一种方法看起来最直观,最容易理解。
您的\D
工作正常,但添加^1
也会替换您正在寻找的领先1
。
preg_replace('/^1|\D/', "", $cell);
答案 1 :(得分:2)
我会采用白名单方法:删除所有内容,这不是数字,而是删除列表中的所有内容,
/[^0-9]/
你的第一个表达式\D
也应该这样做。有什么问题吗?如果它有效,请保留它,因为使用第二种(黑名单)方法你绝对会错过角色。不管怎样,或者你的名单必须增长得很大。
不是真正的答案,但绝对值得一提:国家/地区代码为+X
,或00X
(+
实际上只是{{1}的快捷方式因此,删除前导00
可能会导致非常丑陋的不受欢迎的行为。必须说,我不确切知道它是如何工作的,但在德国,本地电话号码可以从(理论上)任何号码开始(除{{{ 1}}当然)。这表示在删除不需要的字符(1)之前,您应该注意将1
替换为0
。
答案 2 :(得分:0)
$cell=preg_replace("/[^0-9]/","", $cell);
$cell=preg_replace("/^1/","", $cell);
会这样做吗