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