поиск в переменной php
Изучаем PHP: поиск символа в строке
В этой статье рассматриваются различные методы поиска слова, символа или подстроки в тексте. Описываются преимущества и недостатки каждого метода.
Поиск символа в строке — использование 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
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 4
Функции поиска в текстеsubstr()Эта функция возвращает часть строки. Первый аргумент – исходная строка; второй – положение в строке, которую надо вернуть, первого символа (отсчет начинается с нуля); третий – длина строки в символах, которую надо вернуть. Если третий аргумент не указан, то возвращается вся оставшаяся часть строки. Результат выполнения – символ «w«. Если же третий параметр не указывать, т.е. написать то возвратиться подстрока «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. striposstripos — Возвращает позицию первого вхождения подстроки без учёта регистра ОписаниеСписок параметровСтрока, в которой производится поиск. Заметьте, что needle может содержать строку из одного или более символов. Если этот параметр указан, то поиск будет начат с указанного количества символов с начала строки. Если задано отрицательное значение, отсчёт позиции начала поиска будет произведён с конца строки. Возвращаемые значенияВозвращает позицию, в которой находится искомая строка, относительно начала строки haystack (независимо от смещения (offset)). Также обратите внимание на то, что позиция строки отсчитывается от 0, а не от 1. Список измененийПримерыПример #1 Пример использования stripos() = ‘a’ ; Примечания
Смотрите такжеUser Contributed Notes 8 notesI found myself needing to find the first position of multiple needles in one haystack. So I wrote this little function: Regarding the function by spam at wikicms dot org It is very bad practice to use the same function name as an existing php function but have a different output format. Someone maintaining the code in the future is likely to be very confused by this. It will also be hard to eradicate from a codebase because the naming is identical so each use of stripos() would have to be analyzed to see how it is expecting the output format (bool or number/bool). Calling it string_found() or something like that would make a lot more sense for long-term use. Finding numbers in strings requires you to cast the number to string first. A handy function if you need to adjust layout based on whether or not a string contains descending letters: If you like using ternary operator, I wrote simple example how to use stripos function. this would to work with any language, i hope. Функции для работы со строкамиДля получения информации о более сложной обработке строк обратитесь к функциями Perl-совместимых регулярных выражений. Для работы с многобайтовыми кодировками посмотрите на функции по работе с многобайтовыми кодировками. СодержаниеUser Contributed Notes 24 notesI’m converting 30 year old code and needed a string TAB function: //tab function similar to TAB used in old BASIC languages In response to hackajar yahoo No string-to-array function exists because it is not needed. If you reference a string with an offset like you do with an array, the character at that offset will be return. This is documented in section III.11’s «Strings» article under the «String access and modification by character» heading. I use these little doo-dads quite a bit. I just thought I’d share them and maybe save someone a little time. No biggy. 🙂 Just a note in regards to bloopletech a few posts down: The word «and» should not be used when converting numbers to text. «And» (at least in US English) should only be used to indicate the decimal place. Example: /* /** Any string can (usually) be thought of as being in one of these ‘modes’: pure = what the user actually typed / what you want to see on the page / Always knowing what mode your string is in—using these methods to This class refers to its own namespace (so it can work in PHP 4—there is no Example usage: a POST value that you want to query with: Example: Give me everything up to the fourth occurance of ‘/’. to: james dot d dot baker at gmail dot com PHP has a builtin function for doing what your function does, // I really searched for a function that would do this as I’ve seen it in other languages but I couldn’t find it here. This is particularily useful when combined with substr() to take the first part of a string up to a certain point. ?> Example: Give me everything up to the fourth occurance of ‘/’. The functions below: Are correct, but flawed. You’d need to use the === operator instead: Here’s a simpler «simplest» way to toggle through a set of 1..n colors for web backgrounds: Here’s an easier way to find nth. I was looking for a function to find the common substring in 2 different strings. I tried both the mb_string_intersect and string_intersect functions listed here but didn’t work for me. I found the algorithm at http://en.wikibooks.org/wiki/Algorithm_implementation/Strings/Longest_common_substring#PHP so here I post you the function A comprehensive concatenation function, that works with array and strings function str_cat () < Here is a truly random string generator it uses the most common string functions it will work on anywhere. /* sentenceCase($string); Converts a string into proper sentence case (First letter of each sentance capital, all the others smaller) Example Usage: Returns: If you want a function to return all text in a string up to the Nth occurrence of a substring, try the below function. (Pommef provided another sample function for this purpose below, but I believe it is incorrect.) /* ?> Note that this function can be combined with wordwrap() to accomplish a routine but fairly difficult web design goal, namely, limiting inline HTML text to a certain number of lines. wordwrap() can break your string using You will still have to make a conservative guess of the max number of characters per line with wordwrap(), but you can be more precise than if you were simply truncating a multiple-line string with substr(). = ‘Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque id massa. Duis sollicitudin ipsum vel diam. Aliquam pulvinar sagittis felis. Nullam hendrerit semper elit. Donec convallis mollis risus. Cras blandit mollis turpis. Vivamus facilisis, sapien at tincidunt accumsan, arcu dolor suscipit sem, tristique convallis ante ante id diam. Curabitur mollis, lacus vel gravida accumsan, enim quam condimentum est, vitae rutrum neque magna ac enim.’ ; Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque id massa. Duis sollicitudin Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque id massa. Duis sollicitudin I’ve prepared this simple function to obtain a string delimited between tags (not only XML tags!). Anybody needs something like this?. Get the intersection of two strings using array_intersect ?> For more advanced comparison you can use array_uintersect as well.
|