preg_replace phone 国际号码的号码清理
preg_replace phone number sanitizing for international numbers
我有一段 PHP 代码,我们用它从 PHP 中的 phone 数字中去除空格和非数字,效果很好,它从phone 数以及:
substr(preg_replace('/[^0+a-zA-Z0-9]+/', '', $phone), 1);
但是在某些情况下,前导数字不是 0,而是 1,我们不希望它们被剥离。
所以如果数字是 0312345678,它需要去掉前导 0
但是,如果数字是 1800123456,则不应从数字中去除前导 1
我如何调整替换以不去除所有第一个数字并且仅在其为 0 时将其去除,同时保留剩余的 preg_replace 功能,因为当前使用的 substr 去除第一个数字而不管它是什么是吗?
您可以使用
$phone = preg_replace('/^0|[^a-zA-Z0-9+]+/', '', $phone)
正则表达式将使用 ^0
选项删除字符串开头的 0
,而 [^a-zA-Z0-9+]+
将删除除 ASCII 字母、数字和+
字符串中的任何其他位置。
参见regex demo。
我有一段 PHP 代码,我们用它从 PHP 中的 phone 数字中去除空格和非数字,效果很好,它从phone 数以及:
substr(preg_replace('/[^0+a-zA-Z0-9]+/', '', $phone), 1);
但是在某些情况下,前导数字不是 0,而是 1,我们不希望它们被剥离。
所以如果数字是 0312345678,它需要去掉前导 0 但是,如果数字是 1800123456,则不应从数字中去除前导 1
我如何调整替换以不去除所有第一个数字并且仅在其为 0 时将其去除,同时保留剩余的 preg_replace 功能,因为当前使用的 substr 去除第一个数字而不管它是什么是吗?
您可以使用
$phone = preg_replace('/^0|[^a-zA-Z0-9+]+/', '', $phone)
正则表达式将使用 ^0
选项删除字符串开头的 0
,而 [^a-zA-Z0-9+]+
将删除除 ASCII 字母、数字和+
字符串中的任何其他位置。
参见regex demo。