регулярное выражение — PHP своп 0 с +44

Я получаю следующую переменную

$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

Решение

Как уже отмечали другие, вы используете substr неправильно сравнивая 3-х символьную строку (+44) в 1-символьную строку (substr($inputMobile, 0, 1)). Попробуйте это вместо этого:

$inputMobile = $_POST["inputMobile"];

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

Что это делает, это заменить ведущий 044 или же 44 (а также любые последующие нули) с +44 и, если номер не имеет ведущего 044 или же 44Просто добавляет +44 в начале.

Вот демо. Следующие примеры:

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

все стандартизированы и становятся +447714,

7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]