Я получаю следующую переменную
$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);
}
Проблема в том, что если я дам ему номер, подобный +44 7714, он возвращает +44 +44 714.
Как я могу остановить это?
благодаря
Как указывали другие, вы неправильно используете substr
, сравнивая 3- +44
строку (+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
.
substr($inputMobile, 0, 1) === '+44'
никогда не может бытьtrue
.