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