@M4xwell

Как проверить переменную, содержит ли она вначале заданное число?

Есть переменная $phone
Надо проверить - если она начинается на:
8909 или
8961 или
89.......

то echo 'успех';
else {
echo 'не успех';
}

Я могу проверить точечно если $phone содержит вначале 8909, но нужно видимо или массивом это проверить или еще как-то, тут моих знаний не хватает.
  • Вопрос задан
  • 556 просмотров
Решения вопроса 2
Athanor
@Athanor
Лайк + Решение: не жмись, нажми
Добрый час, M4xwell.

Ваш $phone всегда нормирован?
Телефон может записываться совершенно различными способами (+7926..., +7(926)..., 8926, 8(926), 8 926)

Предположим, что да. В таком случае, $phone содержит 11 символов, начинающихся на "89".
План прост:
  1. Формируем массив искомых значений (предполагаю, что все они по 4 символа).
  2. Выделяем из $phone первые четыре символа с помощью метода substr и записываем в $phoneCode
  3. Ищем совпадение $phoneCode в массиве искомых значений с помощью метода in_array.

<?php
$successCodes = ["8909", "8961", "8900"]; //Наполнить на свое усмотрение
$phone = "89091234567" // Заполняется динамически, в соответствии с вашей логикой приемки параметров
$phoneCode = substr($phone, 0, 4);
if (in_array($phoneCode, $successCodes)) {
  echo "Успех";
} else {
  echo "Неудача";
}

Вполне допускаю, что вам потребуется модифицировать перечень допустимых кодов.
В этом случае, я рекомендовал бы вам положить значения в отдельную таблицу БД и искать уже в таблице БД совпадения с кодом.

Если параметр $phone приходит от пользователя в произвольном виде, вам необходимо будет его нормализовать или валидировать.

Также, приведенный здесь код не оформлен отдельным методом, что было бы целесообразно при организации кода вашего приложения с целью предоставления вам свободы выбора подхода к организации кода.

С уважением,
Олег Раев
CIO of Athanor
Ответ написан
slo_nik
@slo_nik Куратор тега PHP
Добрый вечер.
Например при помощи in_array()
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
pligin
@pligin
быдлокодер
использовать регулярку
готовый пример https://regex101.com/r/MUHU9v/1
5e3315cfc6c54045127806.png
if(preg_match("#^(8909|8961|8966)[0-9]{6,14}$#", $phone) ){
     return $phone;
}else{
     return false;
}


регулярка для всевозможных мобильных кодов
^\+(91|994|82|372|375|374|44|998|972|66|90|81|1|507|7|77|380|371|370|996|9955|992|373|84)[0-9]{6,14}$
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы