indexOf() для PHP

2010-09-10

Поиск подстроки в строке в php осуществляется с помощью функции strpos().

Эта функция аналогична методу indexOf() с javascript.
Пример использования:

$res = strpos("abcdefg", "c");
// $res = 2;
$res = strpos("abcdefg", "z");
// $res = false;
$res = strpos("abcdefg", "ab");
// $res = 0;

Обратите внимание, что в случае неудачного поиска, функция strpos() возвращает логическое значение false. А если строка, в которой производится поиск, начинается с подстроки, которая ищется — то функция вернет целочисленное значение 0 , то-есть позицию подстроки в стоке.
Поскольку в php выражение (0 == false) вернёт положительное значение — нужно для сравнения использовать === или !==. (0 === false) вернёт отрицательное значение, поскольку кроме значений сравниваются и типы.

Примет корректного использования:

$res = strpos($text, $word);
if($res !== false) {
// Подстрока найдена
// ...
} else {
// Подстрока не найдена
// ...
}



3 комментария на «indexOf() для PHP»

  1. дядя вася:

    чёта неработает у меня. думаю там чёта перемудрёно с тройным равенством. сижу тра*&$?сь с конструкцией….

  2. admin:

    В заметке было несколько существенных ошибок. Сейчас они исправлены.
    Спасибо Глебу (klgleb@bk.ru) за замечания.

  3. Alexey:

    if($res !== false) { легко заменяется на ! if(!$res), т.к это тоже самое, а проверка на логические значения здесь излишние.

Добавить комментарий