Поиск строки в другой строке - PullRequest
1 голос
/ 24 марта 2010

У меня есть такая строка: $str1 = "mod 1 + mode 2 + comp 1 + toto".

Я бы хотел проверить, если mod 1 в $str1. Я использовал strpos, но эта функция не помогает.

Ответы [ 3 ]

5 голосов
/ 24 марта 2010

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 для получения дополнительной информации. Используйте оператор === для проверки возвращаемого значения этой функции.

1 голос
/ 24 марта 2010

Вы можете использовать функцию strstr .

$str1 = "mod 1 + mode 2 + comp 1 + toto";
$str2 = "mod 1";

if(strstr($str1,$str2) !== false)
 echo "Found $str2 in $str1\n";
0 голосов
/ 24 марта 2010
if(stripos($str,'mod 1')!==false) $hasmod1 = true;
else $hasmod1 = false;

Забота о !== это важная часть.

См. http://php.net/manual/en/function.stripos.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...