Найти текст в строке в PHP - PullRequest
1 голос
/ 20 января 2010

Это должно быть довольно просто, но я не могу найти объяснения, как это сделать.У меня есть строка в PHP.Эта строка может содержать внутри себя подстроку ": ERROR:".Мне нужно найти, есть ли у него эта строка.strpos() отлично работал до этого момента, до сегодняшнего дня, когда ": ERROR:" был первым элементом в строке, поэтому strpos() вернул 0, поэтому программа продолжала работать, думая, что не было ошибки.

Мне не нужно заменять строку или делать с ней какие-либо манипуляции, мне просто нужен простой true/false ответ на вопрос: действительно ли: ОШИБКА: существует в строке? "

Ответы [ 4 ]

3 голосов
/ 20 января 2010

strpos возвращает false, когда строка не найдена, поэтому проверьте false вместо создания неявного условия.

if(strpos($string, ':ERROR:') !== false) {
    // Do something...
}

Как сказал Анураг в комментариях, с такими функциями всегда лучше проводить строгое сравнение (=== вместо того, чтобы просто опускать оператор или использовать ==), потому что это распространенный источник ошибок, особенно в PHP где многие функции могут возвращать значения разных типов.

2 голосов
/ 20 января 2010

Руководство по PHP для strpos():

Эта функция может возвращать логическое значение FALSE, но также может возвращать не-логическое значение, которое оценивается как FALSE, например 0или же "".Пожалуйста, прочитайте раздел о логических значениях для получения дополнительной информации.Используйте оператор === для проверки возвращаемого значения этой функции.

if (strpos($myString, ":ERROR:") !== FALSE) {
  // Error!
}
1 голос
/ 20 января 2010

Вы также можете избежать проблем strpos() не проверки с оператором строгого типа, используя менее известные strstr()

0 голосов
/ 20 января 2010
if(strpos($string, ':ERROR:') !== false){
    //found ':ERROR:' in string
}

"[strpos ()] [r] изменяет положение как целое число. Если игла не найдена, strpos () вернет логическое значение FALSE."
http://php.net/manual/en/function.strpos.php

Если позиция равна 0, то простое использование == или! = Оценит 0 и false как эквивалентные. Поэтому используйте === или! ==, чтобы избежать приведения типов.

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