Задать вопрос
@M4xwell

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

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

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

Я могу проверить точечно если $phone содержит вначале 8909, но нужно видимо или массивом это проверить или еще как-то, тут моих знаний не хватает.
  • Вопрос задан
  • 558 просмотров
Подписаться 1 Простой 11 комментариев
Решения вопроса 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()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы