我有一个电话号码输入字段,允许用户以他们想要的任何格式添加电话号码(555-555-5555,(555)555 - 5555等)。
由于它只是一个电话号码字段,我可以忽略除了字段中的数字之外的所有内容。
我目前正在使用以下代码。 它提取所有数字,但问题在于它们不是有序的 - 它是混乱的顺序。
如何按照原始字符串中显示的顺序提取数字?
preg_match_all('/\d+/', $Phone, $matches);
$Phone = implode('', $matches[0]);
编辑:它们实际上并不是来自此函数的混乱顺序 - 我将数字插入到int(10)数据库字段中,这导致了混乱。但是,下面的答案仍然是实现我的目标的更有效方式。
答案 0 :(得分:4)
使用preg_replace
删除任何非数字:
$numbers = preg_replace('/[^\d]/','',$Phone);
答案 1 :(得分:2)
$Phone = preg_replace('/[^\d]/', '', $Phone);
答案 2 :(得分:2)
为什么不直接替换字符串中不是数字的所有内容?
$number = preg_replace("/[^0-9]/", '', $Phone);
答案 3 :(得分:0)
试试吧
if (!preg_match("/^[0-9\-]*$/",$Phone)) {
echo "Only Numeric and strip (-)";
}
示例:强>
好:0877-9320-9356
失败:0877 9320 9356
或087793209356