PHP与0交换0

时间:2015-11-09 17:46:17

标签: php regex preg-replace phone-number

我得到以下变量

$inputMobile = $_POST["inputMobile"];

现在数字可以有多种方式,例如。

07714....
+447714...
00447714...

我需要做的是确保无论我得到什么数字,我都会将其更改为以+44开头。我有类似的东西

$inputMobile = $_POST["inputMobile"];
    if (substr($inputMobile, 0, 1) === '+44') { 
        $inputMobile = $_POST["inputMobile"];
    }
    else {
        $inputMobile = preg_replace('/^0?/', '+44', $inputMobile);
    }

问题是,如果我给它一个像+447714这样的数字,它会返回+ 44 + 44714。

如何阻止这种情况发生?

由于

1 个答案:

答案 0 :(得分:7)

正如其他人所指出的那样,通过将3个字符的字符串(substr)与1个字符的字符串(+44)进行比较,您错误地使用了substr($inputMobile, 0, 1)。试试这个,而不是:

$inputMobile = $_POST["inputMobile"];

$inputMobile = preg_replace('/^(0*44|(?!\+0*44)0*)/', '+44', $inputMobile);

这样做的目的是用044替换前导44+44(以及任何后续零),如果数字没有前导{{1或044,只需在开头添加44

Here's a demo。以下示例:

+44

都是标准化的,并成为07714.... +447714... 00447714...