strpos
возвращает позицию вхождения в строке, начиная с 0 или false в противном случае. Использование только логического преобразования, как показано ниже, является распространенной ошибкой:
$str1 = "mod 1 + mode 2 + comp 1 + toto";
if (strpos($str, "mod 1")) {
// found
}
Потому что в этом случае strpos
вернет 0. Но 0, преобразованный в логическое значение, будет false :
var_dump((bool) 0 === false); // bool(true)
Так что вам нужно использовать строгое сравнение:
$str1 = "mod 1 + mode 2 + comp 1 + toto";
if (strpos($str, "mod 1") !== false) {
// found
}
Это также то, что советует документация:
Предупреждение Эта функция может возвращать логическое значение FALSE, но также может возвращать и не булево значение, которое оценивается как FALSE, например 0 или "". Пожалуйста, прочитайте раздел Booleans для получения дополнительной информации. Используйте оператор ===
для проверки возвращаемого значения этой функции.