Язык программирования PHP | страница 71



>else echo "Искомая строка не найдена";

>/* заметим, что мы проверяем значение

>$pos на эквивалентность с false.

>Иначе строка, находящаяся в первой позиции,

>не была бы найдена, так как 0

>интерпретируется как false. */

>?>



Если значение параметра строка_для_поиска не является строкой, то оно преобразуется к целому типу и рассматривается как ASCII-код символа. Чтобы получить ASCII-код любого символа в PHP, можно воспользоваться функцией ord("символ")


Например, если мы напишем $pos = strpos($str,228); то интерпретатор будет считать, что мы ищем символ «д». Если добавить эту строчку в приведенный выше пример и вывести результат, то получим сообщение, что искомая строка найдена в позиции 1.


Функция, обратная по смыслу ord, – это chr (код символа). Она по ASCII-коду выводит символ, соответствующий этому коду.


С помощью функции strpos можно найти номер только первого появления строки в исходной строке. Естественно, есть функции, которые позволяют вычислить номер последнего появления строки в исходной строке. Это функция strrpos(). Ее синтаксис таков:


>strrpos (исходная строка, символ для поиска)


В отличие от strpos() эта функция позволяет найти позицию последнего появления в строке указанного символа. Нельзя искать позицию строки, только символа.


Бывают ситуации, когда знать позицию, где находится искомая строка, необязательно, а нужно просто получить все символы, которые расположены после вхождения этой строки. Можно, конечно, воспользоваться и приведенными выше функциями strpos() и strrpos(), но можно сделать и проще – выделить подстроку с помощью предназначенных именно для этого функций.


Выделение подстроки


Функция strstr


Говоря о выделении подстроки из искомой строки в языке PHP, в первую очередь стоит отметить функцию strstr():


>strstr (исходная строка, строка для поиска)


Она находит первое появление искомой строки и возвращает подстроку, начиная с этой искомой строки до конца исходной строки.


Если строка для поиска не найдена, то функция вернет false. Если строка для поиска не принадлежит строковому типу данных, то она переводится в целое число и рассматривается как код символа. Кроме того, эта функция чувствительна к регистру, т.е. если мы будем параллельно искать вхождения слов «Идея» и «идея», то результаты будут разными. Вместо strstr() можно использовать абсолютно идентичную ей функцию strchr().


Пример 8.4. Выделим из строки, содержащей название и автора исследования, подстроку, начинающуюся со слова «Название»: