PHP своп 0 с +44

1

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

$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.

Как я могу остановить это?

благодаря

  • 7
    «Если первый символ - это последовательность из трех символов ...», возможно, суть вашей проблемы здесь.
  • 3
    substr($inputMobile, 0, 1) === '+44' никогда не может быть true .
Теги:
preg-replace
phone-number

1 ответ

7

Как указывали другие, вы неправильно используете 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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню