В этой статье рассматриваются различные методы поиска слова, символа или подстроки в тексте. Описываются преимущества и недостатки каждого метода.
Поиск символа в строке — использование strpos() для регистрозависимого поиска
Простейшим способом проверить, содержит ли строка определённое слово, является использование PHP функции strpos(). Она возвращает позицию первого вхождения подстроки в строке или FALSE, если соответствия не найдены. Поэтому можно сравнить значение, возвращаемое функцией strpos() с FALSE, чтобы проверить наличие подстроки. Пример:
При поиске целого слова (например, “на”) функция также вернёт значение TRUE, если строка содержит такие слова, как “она”, “вена” или “например”.
Поиск символа в строке — использование функции stripos() для регистронезависимого поиска
Для регистрозависимого поиска можно использовать функцию stripos(). Она работает аналогично функции strpos(). Единственное отличие заключается в том, что она игнорирует регистр при поиске подстроки внутри другой строки.
Функция strpos() вернула бы значение FALSE во всех перечисленных выше случаях. Но функция stripos() проигнорировала регистр и вернула значение TRUE.
Другим способом поиска, независящим от регистра, является преобразование всех строк и подстрок в одинаковый регистр, используя функции strtolower() и strtoupper(). Для проверки можно использовать strpos(). Но проще stripos().
Поиск символа в строке — использование регулярных выражений
Также для поиска можно использовать регулярные выражения. Они лучше подходят для случаев, когда вы ищете в строке более сложные конструкции.
Но помните, что функция strpos() работает в три раза быстрее, чем регулярные выражения. Следующий пример демонстрирует, как с их помощью найти слово, символ в строке:
Использование функции preg_match() имеет смысл только при сложном поиске. Например, для проверки того, содержит ли строка слова с десятью и более символами и т.п. Пример:
Чтобы сделать поиск регистронезависимым, добавьте флаг i в конец шаблона. Пример реализации:
Использование регулярных выражений для поиска точного вхождения слова
Функции strpos() и stripos()работают быстрее, чем регулярные выражения. Но их использование для поиска точного вхождения слова может быть проблематичным.
В подобных ситуациях лучше применять регулярные выражения. Можно использовать выражение b в шаблоне регулярного выражения, чтобы обозначить границу слова. Если слово, которое вы ищете, заключено в выражения b, функция preg_match() найдёт только точные вхождения слова и вернет FALSE для частичных совпадений. Вот пример:
Использование strstr() для поиска подстроки
PHP функция strstr() может быть использована для проверки вхождения символа или подстроки. Она возвращает часть исходной строки, начиная с первого вхождения искомого слова и до конца. Функция вернёт значение FALSE, если подстрока не найдена. Благодаря этому можно проверить, содержит ли строка подстроку. Вот пример:
Для регистронезависимого поиска используйте функцию stristr().
Пожалуйста, оставляйте ваши комментарии по текущей теме материала. Мы крайне благодарны вам за ваши комментарии, подписки, отклики, лайки, дизлайки!
strripos — Возвращает позицию последнего вхождения подстроки без учёта регистра
Описание
Список параметров
Строка, в которой производится поиск.
Фактически это будет последнее вхождение needle без учёта offset последних байт.
Возвращаемые значения
Возвращает номер позиции последнего вхождения needle относительно начала строки haystack (независимо от направления поиска и смещения (offset)).
Замечание: Позиция в строке строки отсчитывается от 0, а не от 1.
Список изменений
Версия
Описание
8.0.0
Передача целого числа ( int ) в needle больше не поддерживается.
7.3.0
Передача целого числа ( int ) в needle объявлена устаревшей.
Примеры
Пример #1 Пример использования strripos()
= ‘ababcd’ ; $needle = ‘aB’ ;
Результат выполнения данного примера:
Смотрите также
User Contributed Notes 7 notes
Simple way to implement this function in PHP 4
OK, I guess this will be the final function implementation for PHP 4.x versions ( my previous posts are invalid )
Suppose you just need a stripos function working backwards expecting that strripos does this job, you better use the following code of a custom function named strbipos:
Sorry, I made that last post a bit prematurely. One more thing wrong with the simple php4 version is that it breaks if the string is not found. It should actually look like this:
strripos() has very strange behaviour when you provide search position. For some reason it searches forward from the given position, instead of searching backward, that is more logical.
PHP поиск в тексте поможет в нелегком труде редакторов
Дата публикации: 2016-12-16
От автора: иногда забудешь какое-нибудь слово во время разговора, а потом мучаешься, что сказал не все и не полностью. Вроде, как многое осталось «за кадром». Вот если можно было бы создать какую-нибудь программную «напоминалку». Но тогда нам потребуется реализовать PHP поиск в тексте, чтобы вспомнить забытое.
Зачем что-то искать?
Искать в тексте приходится при реализации различных программных решений, связанных с валидацией содержания публикаций. Это требуется, если нужно проверить правильность заполнения полей формы, анкет и остальных документов.
Другой распространенный случай, когда нужно осуществить поиск текста в файле PHP, связан с созданием различных парсеров. Например, все программы проверки уникальности контента в том или иной мере используют внутритекстовый поиск для нахождения копий и плагиата.
Также подобный функционал может пригодиться редакторам. Чаще всего редактуре сайтов приходится проверять, все ли ключевые слова использовал копирайтер.
Поможем редактуре!
В чем соль! Есть у меня один редактор знакомый. Он мучается, когда авторы скидывают ему много статей. Из-за этого редактор просиживает дни и ночи, проверяя в них наличие ключевых запросов. Давайте (программным путем) поможет ему вершить свой нелегкий труд. Для этого мы напишем специальную функцию:
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Сколько новых сайтов Вы делаете за год? результаты
Строковые функции PHP
Предыдущая
Следующая
Функции поиска в тексте
substr()
Эта функция возвращает часть строки. Первый аргумент – исходная строка; второй – положение в строке, которую надо вернуть, первого символа (отсчет начинается с нуля); третий – длина строки в символах, которую надо вернуть. Если третий аргумент не указан, то возвращается вся оставшаяся часть строки.
Результат выполнения – символ “w“. Если же третий параметр не указывать, т.е. написать $string = substr(“Hello, world!”, 6);
то возвратиться подстрока “world!”.
strpos()
Эта функция обеспечивает действие, обратное функции substr. Т.е. она возвращает позицию в строке haystack, в которой найдена переданная ей подстрока needle. Т.е. следующий скрипт
вернет нам число 7.
Необязательный параметр offset позволяет указать в строке позицию, с которой надо начинать поиск:
strrpos()
Эта функция ищет в строке haystack последнюю позицию, где встречается символ needle.
strstr()
Функция strstr() возвращает участок строки, заданной в параметре haystack, начиная с первого фрагмента, указанного в параметре needle и до конца строки. В случае неудачи функция возвращает false.
Эта функция чувствительна к регистру. Заметим также, что в случае, если needle не является строкой, то значение преобразуется в целое и используется как код искомого символа.
strchr()
Данная функция работает абсолютно идентично функции strstr():
stristr()
Эта функция работает абсолютно аналогично функции strstr(), только является нечувствительной к регистру.
strrchr()
А эта функция отличается от аналогичных ей тем, что осуществляет поиск последнего вхождения подстроки. Т.е. функция strrchr() возвращает участок строки, заданной в параметре haystack, начиная с последнего фрагмента, указанного в параметре needle и до конца строки. В случае неудачи возвращает false.
Чувствительна к регистру. В случае, если needle не является строкой, то значение преобразуется в целое и используется как код искомого символа.
И вот что мы видим в результате:
substr_count()
Функция substr_count() находит количество вхождений фрагмента в строку. Она возвращает число фрагментов needle, присутствующих в строке haystack.
strspn()
Функция strspn() определяет присутствие начальных символов в строке. Она возвращает длину начального фрагмента строки str1, состоящего полностью из символов, которые есть в строке str2.
strcspn()
Обратная функции strspn() функция strcspn() Определяет отсутствие начальных символов в строке.
Функция strcspn() возвращает длину начального фрагмента строки str1, состоящего полностью не из символов, которые есть в строке str2.
Предыдущая
Следующая
Если Вам нужна частная профессиональная консультация от авторов многих книг Кузнецова М.В. и Симдянова И.В., добро пожаловать в наш Консультационный Центр SoftTime.
Данная функция работает идентично функции strstr()
Определяет отсутствие начальных символов в строке. Синтаксис:
Функция strspn() возвращает длину начального фрагмента строки str1, состоящего полностью не из символов, которые есть в строке str2.
Поиск в строке любого символа из заданного набора (PHP5)
strpbrk() ищет в строке haystack символы из набора char_list и возвращает строку начиная с той позиции, где был найден символ (или FALSE если символ не найден). Параметр char_list чувствителен к регистру.
Поиск первого вхождения подстроки в строку. Синтаксис:
Функция strstr() возвращает участок строки, заданной в параметре haystack, начиная с первого фрагмента, указанного в параметре needle и до конца. В случае неудачи возвращает false. Данная функция чувствительна к регистру. В случае, если needle не является строкой, то значение преобразуется в целое и используется как код искомого символа.
Нахождение первого вхождения подстроки, не учитывая регистр. Синтаксис:
Функция stristr() возвращает участок строки, заданной в параметре haystack, начиная с первого фрагмента, указанного в параметре needle и до конца. В случае неудачи возвращает false. Данная функция нечувствительна к регистру. В случае, если needle не является строкой, то значение преобразуется в целое и используется как код искомого символа.
Поиск последнего вхождения подстроки. Синтаксис:
Функция strrchr() возвращает участок строки, заданной в параметре haystack, начиная с последнего фрагмента, указанного в параметре needle и до конца. В случае неудачи возвращает false. Данная функция чувствительна к регистру. В случае, если needle не является строкой, то значение преобразуется в целое и используется как код искомого символа.
Находит позицию первого вхождения подстроки в заданной строке. Синтаксис:
Функция strpos() пытается найти в строке were подстроку what и в случае успеха возвращает позицию (индекс) этой подстроки в строке. Первый символ строки имеет индекс 0. Необязательный параметр fromwhere можно задавать, если поиск нужно вести не с начало строки, а с какой-то другой позиции. В этом случае следует эту позицию передать в fromwhere. Если подстроку не удалось найти, функция возвращает false. Если параметр what не строка, в этом случае его значение преобразуется в целое и используется как код искомого символа.
Находит позицию первого вхождения подстроки в заданной строке без учета регистра. Синтаксис:
Функция stripos() пытается найти в строке were подстроку what и в случае успеха возвращает позицию (индекс) этой подстроки в строке. В отличие от strpos(), эта функция не учитывает регистр символов. Первый символ строки имеет индекс 0. Необязательный параметр fromwhere можно задавать, если поиск нужно вести не с начало строки, а с какой-то другой позиции. В этом случае следует эту позицию передать в fromwhere. Если подстроку не удалось найти, функция возвращает false. Если параметр what не строка, в этом случае его значение преобразуется в целое и используется как код искомого символа.
Примечание: Функция stripos() может применяться для поиска данных в двоичной форме. Поддержка: PHP 5
Находит в заданной строке последнюю позицию, в которой находится заданный фрагмент. Синтаксис:
Если искомый символ стоит первый в строке или его вообще нет, функция возвратит 0.
В случае, если искомый символ не найден, возвращает false.
Находит количество вхождений фрагмента в строку. Синтаксис:
Функция substr_count() возвращает число фрагментов what, присутствующих в строке where.
Определяет присутствие начальных символов в строке. Синтаксис:
Функция strspn() возвращает длину начального фрагмента строки str1, состоящего полностью из символов, которые есть в строке str2.