Поиск символа в строке PHP с помощью strpos, preg_match и strstr
В этой статье рассматриваются различные методы поиска слова, символа или подстроки в тексте. Описываются преимущества и недостатки каждого метода.
- Поиск символа в строке — использование strpos() для регистрозависимого поиска
- Поиск символа в строке — использование функции stripos() для регистронезависимого поиска
- Поиск символа в строке — использование регулярных выражений
- Использование регулярных выражений для поиска точного вхождения слова
- Использование strstr() для поиска подстроки
Простейшим способом проверить, содержит ли строка определённое слово, является использование PHP функции strpos(). Она возвращает позицию первого вхождения подстроки в строке или FALSE, если соответствия не найдены.
$the_string = "Я на 5 лет старше тебя."; $the_word = "лет"; $the_character = "Я"; $the_substring = "5 лет"; // Вывод — Слово "лет" есть в данной строке. if (strpos($the_string, $the_word) !== false) { echo 'Слово "'.$the_word.'" есть в данной строке.'; } // Вывод — Символ "Я" есть в данной строке. if (strpos($the_string, $the_character) !== false) { echo ' Символ "'.$the_character.'" есть в данной строке.'; } // Вывод — Подстрока "5 лет" есть в данной строке. if (strpos($the_string, $the_substring) !== false) { echo 'Подстрока "'.$the_substring.'" есть в данной строке.'; }
Обратите внимание, что я использовал оператор строгого неравенства (!==). Если искомое слово встречается в начале строки, функция strpos() вернёт 0. Это будет расценено оператором != как значение FALSE. Пример:
// Вывод — Символа "Я" нет в данной строке. if (strpos($the_string, $the_character) != false) { echo 'Символ "'. $the_character.'" есть в данной строке.'; } else { echo 'Символа "'.$the_character.'" нет в данной строке.'; }
При поиске целого слова (например, “на”) функция также вернёт значение TRUE, если строка содержит такие слова, как “она”, “вена” или “например”.
Также можно использовать > -1 вместо !==. Потому что даже если strpos() вернёт 0 как значение индекса, он всё равно будет больше -1. Но помните, что оператор «больше» (>) работает медленнее оператора строгого неравенства (!==).
Для регистрозависимого поиска можно использовать функцию stripos(). Она работает аналогично функции strpos(). Единственное отличие заключается в том, что она игнорирует регистр при поиске подстроки внутри другой строки.
$the_string = "Ваня любит и яблоки, и апельсины."; $the_word = "ваня"; $the_character = "Я"; $the_substring = "ЛЮбИт И"; // Вывод — Слово "ваня" есть в данной строке. if (stripos($the_string, $the_word) !== false) { echo 'Слово "'.$the_word.'" есть в данной строке. '; } // Вывод — Символ "Я" есть в данной строке. if (stripos($the_string, $the_character) !== false) { echo 'Символ "'.$the_character.'" есть в данной строке.'; } // Вывод — Подстрока "ЛЮбИт И" есть в данной строке. if (stripos($the_string, $the_substring) !== false) { echo 'Подстрока "'.$the_substring.'" есть в данной строке.'; }
Функция strpos() вернула бы значение FALSE во всех перечисленных выше случаях. Но функция stripos() проигнорировала регистр и вернула значение TRUE.
Другим способом поиска, независящим от регистра, является преобразование всех строк и подстрок в одинаковый регистр, используя функции strtolower() и strtoupper(). Для проверки можно использовать strpos(). Но проще stripos().
Также для поиска можно использовать регулярные выражения. Они лучше подходят для случаев, когда вы ищете в строке более сложные конструкции.
Но помните, что функция strpos() работает в три раза быстрее, чем регулярные выражения. Следующий пример демонстрирует, как с их помощью найти слово, символ в строке:
$the_string = "Я на 5 лет старше тебя. "; $the_word = "лет"; $the_character = "Я"; $the_substring = "5 лет"; // Вывод — Слово "лет" есть в данной строке. if (preg_match('/лет/', $the_string)) { echo 'Слово "'.$the_word.'" есть в данной строке.'; } // Вывод — Символ "Я" есть в данной строке. if (preg_match('/Я/', $the_string)) { echo 'Символ "'.$the_character.'" есть в данной строке.'; } // Вывод — Подстрока "5 лет" есть в данной строке. if (preg_match('/5 лет/', $the_string)) { echo 'Подстрока "'.$the_substring.'" есть в данной строке.'; }
Использование функции preg_match() имеет смысл только при сложном поиске. Например, для проверки того, содержит ли строка слова с десятью и более символами и т.п. Пример:
$the_string = 'Фотосинтез и рискованный – длинные слова.'; // Вывод — Данная строка содержит слова из 10 и более символов. if (preg_match('/w{10,}/i', $the_string)) { echo 'Данная строка содержит слова из 10 и более символов.'; }
Чтобы сделать поиск регистронезависимым, добавьте флаг i в конец шаблона. Пример реализации:
$the_string = "Ваня любит и яблоки, и апельсины."; $the_word = "ваня"; $the_character = "Я"; $the_substring = "ЛЮбИт И"; // Вывод — Слово "ваня" есть в данной строке. if (preg_match('/ваня/i', $the_string)) { echo 'Слово "'.$the_word.'" есть в данной строке.'; } // Вывод — Символ "Я" есть в данной строке. if (preg_match('/Я/i', $the_string)) { echo 'Символ "'.$the_character.'" есть в данной строке.'; } // Вывод — Подстрока "ЛЮбИт И" есть в данной строке. if (preg_match('/ЛЮбИт И/i', $the_string)) { echo 'Подстрока "'.$the_substring.'" есть в данной строке.'; }
Функции strpos() и stripos()работают быстрее, чем регулярные выражения. Но их использование для поиска точного вхождения слова может быть проблематичным.
В подобных ситуациях лучше применять регулярные выражения. Можно использовать выражение b в шаблоне регулярного выражения, чтобы обозначить границу слова. Если слово, которое вы ищете, заключено в выражения b, функция preg_match() найдёт только точные вхождения слова и вернет FALSE для частичных совпадений. Вот пример:
$the_string = 'Фотосинтез и рискованный – длинные слова.'; $the_word = 'синтез'; // Вывод — Слово "синтез" имеет точное совпадение в данной строке. [ЛОЖНО положительный] if (preg_match('/синтез/', $the_string)) { echo 'Слово "синтез" имеет точное совпадение в данной строке. [ЛОЖНО положительный]'; } // Вывод — Слово "синтез" имеет точное совпадение в данной строке. [ЛОЖНО положительный] if (strpos($the_string, $the_word)) { echo 'Слово "синтез" имеет точное совпадение в данной строке. [ЛОЖНО положительный]'; } // Вывод — Слово "синтез" не имеет точных совпадений в данной строке. [Ожидаемый Результат] if (preg_match('/bсинтезb/', $the_string)) { echo 'Слово "синтез" имеет точное совпадение в данной строке. [ЛОЖНО положительный]'; } else { echo 'Слово "синтез" не имеет точных совпадений в данной строке. [Ожидаемый Результат]'; }
PHP функция strstr() может быть использована для проверки вхождения символа или подстроки. Она возвращает часть исходной строки, начиная с первого вхождения искомого слова и до конца.
Функция вернёт значение FALSE, если подстрока не найдена. Благодаря этому можно проверить, содержит ли строка подстроку. Вот пример:$the_string = "Я на 5 лет старше тебя."; $the_word = "лет"; $the_character = "Я"; $the_substring = "5 лет"; // Вывод — Слово "лет" есть в данной строке. if (strstr($the_string, $the_word) !== false) { echo 'Слово "'.$the_word.'" есть в данной строке.'; } // Вывод — Символ "Я" есть в данной строке. if (strstr($the_string, $the_character) !== false) { echo 'Символ "'.$the_character.'" есть в данной строке.'; } // Вывод — Подстрока "5 лет" есть в данной строке. if (strstr($the_string, $the_substring) !== false) { echo 'Подстрока "'.$the_substring.'" есть в данной строке.'; }
Для регистронезависимого поиска используйте функцию stristr().
Краткое резюме
- Лучший метод поиска символа или слова в строке – PHP функции strpos(). Если нужно провести регистронезависимый поиск, применяйтеstripos(). Обе функции просты в использовании и работают быстрее остальных методов.
- Для сложного поиска используйте регулярные выражения. Вы также можете применять их для простого поиска, но они работают медленнее, чем функция strpos().
- Регулярные выражения полезны, когда вы ищете точное вхождение слова. Например, при поиске слова “сто” функция strpos() также вернёт значение TRUE, если строка содержит слово “Место”. С другой стороны, можно использовать выражение b в функции preg_match(), которая в таком случае возвратит FALSE.
- Используйте strstr() для регистрозависимого поиска и stristr() для регистронезависимого.
Сергей Бензенкоавтор-переводчик статьи «Best way to check if a string contains a specific word or substring in PHP»
Получение символов строки на PHP
Пусть у нас есть какая-то строка. Каждый
символ в этой строке имеет свой порядковый
номер: первый символ номер 0
, второй
символ — номер 1
, третий символ номер 2
и так далее.
При необходимости можно получить доступ к определенному символу строки по его номеру. Для этого пишется имя переменный, после этого имени ставятся квадратные скобки и в этих скобках указывается номер символа.
Давайте посмотрим на примере. Пусть у нас дана вот такая строка:
<?php
$str = 'abcde';
?>
Давайте выведем какие-нибудь символы этой строки:
<?php
$str = 'abcde';
echo $str[0]; // выведет 'a'
echo $str[1]; // выведет 'b'
echo $str[2]; // выведет 'c'
?>
А теперь давайте изменим нулевой символ:
<?php
$str = 'abcde';
$str[0] = '+';
echo $str; // выведет '+bcde'
?>
Номер символа также может храниться и в переменной:
<?php
$str = 'abcde';
$num = 3; // номер символа в переменной
echo $str[$num]; // выведет 'd'
?>
Дана строка 'abcde'
. Обращаясь к отдельным
символам этой строки выведите на экран символ 'a'
, символ 'c'
, символ 'e'
.
Дана переменная со строкой 'abcde'
.
Обращаясь к отдельным символам этой строки
запишите в новую переменную символы этой
строки в обратном порядке, то есть 'edcba'
.
Дана переменная $str
со строкой 'abcde'
и переменная $num
с номером символа.
Выведите на экран символ, номер которого
хранится в переменной $num
.
Последний символ строки
Давайте выведем последний символ строки. При этом сделаем так, чтобы наш скрипт сам определял номер последнего символа, независимо от длины строки.
Пусть у нас есть такая строка:
<?php
$str = 'abcde';
?>
Как вы видите, количество символов в этой
строке равно 5
. Если немного подумать,
то становится очевидным, что номер последнего
символа этой строки будет на 1
меньше
ее длины, так как нумерация символов начинается
с нуля.
Получается, что зная длину строки, мы можем
отнять от нее 1
и получить номер последнего
символа, а затем по этому номеру можно получить
сам последний символ.
Как вы уже знаете, длину строки можно найти
с помощью функции strlen
. Исходя из
этого найдем номер последнего символа:
<?php
$str = 'abcde';
$last = strlen($str) - 1; // номер последнего символа
?>
Используем найденный номер для вывода символа на экран:
<?php
$str = 'abcde';
$last = strlen($str) - 1; // номер последнего символа
echo $str[$last]; // выведет 'e'
?>
Промежуточную переменную $last
можно
и не вводить:
<?php
$str = 'abcde';
echo $str[strlen($str) - 1]; // выведет 'e'
?>
Дана строка. Выведите на экран ее последний символ.
Дана строка. Выведите на экран ее предпоследний символ.
Дана строка. Выведите на экран ее предпредпоследний символ.
Цифры в строке
Как вы уже знаете, строки могут состоять из цифр. В этом случае все будет работать аналогично:
<?php
$str = '12345';
echo $str[0]; // выведет '1'
echo $str[1]; // выведет '2'
echo $str[2]; // выведет '3'
?>
Можно, например, найти сумму первых двух цифр нашего числа и это будет работать:
<?php
$str = '12345';
echo $str[0] + $str[1]; // выведет 3
?>
Дана строка '12345'
. Найдите сумму
цифр этой строки.
Числа
Попытка получить символ числа приведет к ошибке:
<?php
$num = 12345;
echo $num[0]; // выдаст ошибку
?>
Для решения проблемы можно преобразовать наше число к строке:
<?php
$num = 12345;
$str = (string) $num;
echo $str[0]; // выведет '1'
?>
Дано число 12345
. Найдите сумму цифр
этого числа.
Дано число 12345
. Найдите произведение
цифр этого числа.
Дано число 12345
. Переставьте цифры
этого числа в обратном порядке.
₱ PHP Знак филиппинского песо (копировать и вставить символ + на клавиатуре)
Щелкните символ ₱ филиппинского песо ниже, чтобы скопировать и вставить его . Валюта символа филиппинского песо ₱. Он используется в экономике и банковском деле, в магазинах почти по всей Южной Америке, а также в Мексике и на Филиппинах и является одной из крупнейших валют в мире. Вот почему для этого есть компьютерный текстовый символ, который я покажу вам, как это сделать, используя различные методы в зависимости от вашей операционной системы и вкусов.
Деньги | € | £ | Ұ | ₴ | $ | ₰ | ₠ | ||||
---|---|---|---|---|---|---|---|---|---|---|---|
¢ | ₧ | ₤ | ¥ | ₳ | ₲ | ₪ | |||||
₵ | ₯ | 元 | ₣ | ₱ | ฿ | ¤ | |||||
₡ | ₨ | ₮ | ₭ | ₩ | ރ | ₭ | ₩ | ރ | ₭ | ₩ | . 0010 円 |
₢ | Kč | ₥ | ₫ | ₦ | Zł | ﷼ |
Символы
Что означает песо
Символ песо ₱ является знаком валюты песо, используемой в большей части Южной Америки, а также в Мексике и на Филиппинах. Другими способами написания знака филиппинского песо являются «PHP», «PhP», «P» (зачеркнутый или двойной зачеркнутый верхний регистр P), который по-прежнему является наиболее распространенным методом, однако поддержка шрифта для знака песо Unicode существует уже некоторое время. В Мексике вместо знака песо ₱ в качестве валюты используется всем известный знак доллара $.
Как ввести символ песо
Выберите свою систему и узнайте.
Окна
Состояния переключения
Настройте раскладку клавиатуры в Windows, чтобы вы могли вводить все дополнительные символы так же просто, как и любой другой текст. Настройка занимает около 5-10 минут, но вы будете печатать как босс. С помощью этой техники вы можете назначить символ песо ₱ и любые другие текстовые символы на клавиатуру.
Карта символов
CharMap позволяет вам просматривать и использовать все символы и символы, доступные во всех шрифтах (некоторые примеры шрифтов: «Arial», «Times New Roman», «Webdings»), установленных на вашем компьютере. Вы можете ввести символ песо, используя его.
Мак
Emoji на iOS (iPhone, iPad и iPod touch)
Текстовые символы с клавиатурой Emoji для iPhone 📲Простой и красивый способ узнать, как добавить виртуальную клавиатуру для символов Emoji, видимых в виде маленьких картинок. Сама клавиатура предустановлена на вашем устройстве iOS, поэтому вам не нужно ничего скачивать или покупать.
Палитра персонажей
Палитра символов позволяет просматривать и использовать все знаки и символы, включая песо, доступные во всех шрифтах (некоторые примеры шрифтов: «Arial», «Times New Roman», «Webdings»), установленных на вашем компьютере.
линукс
С клавиатуры
Карта символов
Карта символов позволяет просматривать и использовать все символы и символы, доступные во всех шрифтах (некоторые примеры шрифтов: «Arial», «Times New Roman», «Webdings»), установленных на вашем компьютере. Это также может помочь вам найти коды Unicode для ввода символов с клавиатуры.
HTML-код
Ниже приведен список объектов HTML и JavaScript для символа песо. В Javascript вы должны писать как = «этот символ \u2669», если вы хотите включить специальный символ в строку.
HTML-объект | JS-сущность | Символ |
---|---|---|
₱ | \u8369 | ₱ |
Ссылка — что означает этот символ в Php? С примерами кода
Справочник по— что означает этот символ в Php? С примерами кода
В этом уроке мы будем использовать программирование, чтобы попытаться решить Справочник — что означает этот символ в Php? головоломка. Это демонстрирует следующий код.
++ оператор приращения -- оператор декремента Пример эффекта имени -------------------------------------------------- -------------------- ++$a Pre-increment Увеличивает $a на единицу, затем возвращает $a. $a++ Post-increment Возвращает $a, затем увеличивает $a на единицу. --$a Pre-decrement Уменьшает $a на единицу, затем возвращает $a. $a-- Post-decrement Возвращает $a, затем уменьшает $a на единицу.
Мы исследовали широкий спектр вариантов использования, чтобы найти решение для ссылки — что означает этот символ в Php? проблема.
Что означает :: в PHP?
Оператор разрешения области видимости
Для чего этот символ используется в PHP?
Символ @ является оператором контроля ошибок («молчание» или «отключение»). Это заставляет PHP подавлять любые сообщения об ошибках (уведомления, предупреждения, фатальные и т. д.), генерируемые связанным выражением. Он работает так же, как унарный оператор, например, имеет приоритет и ассоциативность. 09-Апрель-2020
Что означает == и === в PHP?
== Оператор: Этот оператор используется для проверки равенства заданных значений. Если да, то возвращает true, иначе возвращает false. Синтаксис: операнд1 == операнд2. === Оператор: этот оператор используется для проверки того, равны ли заданные значения и его тип данных. Если да, то возвращается true, в противном случае возвращается false.18 октября 2021 г.
Что означает этот символ ->?
Стрелка — это графический символ, такой как ← или →, или пиктограмма, используемая для указания или указания направления.
Что означают 3 точки в PHP?
В PHP это буквально называется оператором, но в других языках он известен как оператор splat. Из сообщения в блоге LornaJane 2014 года об этой функции: эта функция позволяет вам записывать переменное количество аргументов в функцию в сочетании с «обычными» аргументами, передаваемыми, если хотите. 13 декабря 2016 г.
В чем разница между и $$ в PHP?
$var_name — это обычная переменная, используемая для хранения значения. Он может хранить любое значение, например целое число, число с плавающей запятой, символ, строку и т. д. С другой стороны, переменная $$var_name известна как ссылочная переменная, где $var_name — обычная переменная. $$var_name используется для ссылки на переменную с именем в качестве значения переменной $var_name.23 июля 2018 г.
Почему мы используем символ доллара ($) перед переменными в PHP?
Что означает $$ (доллар-доллар или двойной доллар) в PHP? $x (один доллар) — это обычная переменная с именем x, которая хранит любое значение, такое как строка, целое число, число с плавающей запятой и т. д. $$x (двойной доллар) — это ссылочная переменная, в которой хранится значение, доступ к которому можно получить с помощью символ $ перед значением $x.21 июня 2022 г.
Какой символ используется для правильного завершения инструкции PHP?
Примечание. Операторы PHP заканчиваются точкой с запятой ( ; ).
В чем разница между и == в PHP?
Оператор присваивания равенство = присваивает только значения.