PHP strpos не возвращает true, когда элементы совпадают

Это будет звучать очень просто, но я не могу понять, почему это не работает.

Я проверяю, что строка соответствует чему-то, чтобы можно было отправлять некоторые тексты.

Возвращаемая строка: Delivered to UPS Access Point™ location and awaiting customer pickup..

И это утверждение, которое я использую, чтобы проверить это.

if (strpos(strtolower($step->status), "delivered to ups access point")) {

}

В настоящее время оператор if возвращает false, хотя я ожидал, что это будет правда.

Любые идеи

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
46
3

Ответы 3

Вы обрабатываете strpos как логическое значение, а это не так. Он возвращает позицию строки, которая будет равна 0, и преобразуется в false.

Так что сравните с not false (not found) или> = 0 (found), тип важен.

Пример:

    $data = "Delivered to UPS Access Point™ location and awaiting customer pickup.";
    if (strpos(strtolower($data), "delivered to ups access point") !== false) {
     echo 'Found!';
    }

Отличное спасибо, совсем забыл, что это так возвращается

Lewis Smith 06.07.2018 12:27

У всех бывают такие моменты;)

DevionNL 06.07.2018 12:29
strpos возвращает false, если не найден, но не -1.
deceze 06.07.2018 12:30

Это должно работать

$step->status = "Delivered to UPS Access Point™ location and awaiting customer pickup.";
if (strpos(strtolower($step->status), "delivered to ups access point") !== false) {
    echo "String matches";
}
else {
    echo "String not matches";
}

strpos - это индекс возврата вашего второго аргумента. В вашем случае «доставлено в точку доступа ИБП» - это начальная точка, означающая 0-ю позицию. 0 означает ложь.

Другие вопросы по теме