Регулярные выражения php заглавные буквы
PHP regexp — это мощный алгоритм сопоставления шаблонов, которое может быть выполнено в одном выражении. Регулярные выражения PHPиспользуют арифметические операторы (такие как +, -, ^) для создания сложных выражений.
Для чего используются регулярные выражения:
- Регулярные выражения упрощают идентификацию строковых данных путем вызова одной функции. Это экономит время при составлении кода;
- При проверке введенных пользователем данных, таких как адрес электронной почты, домен сайта, номер телефона, IP-адрес;
- Выделение ключевых слов в результатах поиска;
- Регулярные выражения могут использоваться для идентификации тегов и их замены.
Регулярные выражения в PHP
PHP содержит встроенные функции, которые позволяют работать с регулярными выражениями. Теперь рассмотрим часто используемые функции регулярных выражений PHP.
- preg_match — используется для выполнения сопоставления с шаблоном строки. Она возвращает true, если совпадение найдено, и false, если совпадение не найдено;
- preg_split — используется для разбивки строки по шаблону, результат возвращается в виде числового массива;
- preg_replace – используется для поиска по шаблону и замены на указанную строку.
Ниже приведен синтаксис функций регулярных выражений, таких как preg_match, preg_split или PHP regexp replace:
«имя_функции» — это либо preg_match, либо preg_split, либо preg_replace.
«/…/» — косые черты обозначают начало и конец регулярного выражения.
«’/шаблон/’» — шаблон, который нам нужно сопоставить.
«объект» — строка, с которой нужно сопоставлять шаблон.
Теперь рассмотрим практические примеры использования упомянутых выше функций.
Preg_match
В первом примере функция preg_match используется для выполнения простого сопоставления шаблоном для слова guru в заданном URL-адресе.
В приведенном ниже коде показан вариант реализации данного примера:
Рассмотрим ту часть кода, которая отвечает за вывод «preg_match (‘/ guru /’, $ my_url)».
«preg_match(…)» — функция PHP match regexp.
«’/Guru/’» — шаблон регулярного выражения.
«$My_url» — переменная, содержащая текст, с которым нужно сопоставить шаблон.
Preg_split
Рассмотрим другой пример, в котором используется функция preg_split.
Мы возьмем фразу и разобьем ее на массив; шаблон предназначен для поиска единичного пробела:
Preg_replace
Рассмотрим функцию preg_replace, которая выполняет сопоставление с шаблоном и заменяет найденный результат другой строкой.
Приведенный ниже код ищет в строке слово guru. Он заменяет его кодом css, который задает цвет фона:
Метасимволы
В приведенных выше примерах использовались простые шаблоны. Метасимволы позволяют выполнять более сложные сопоставления шаблонов PHP regexp, такие как проверка адреса электронной почты. Рассмотрим часто используемые метасимволы.
Метасимвол | Описание | Пример |
. | Обозначает любой единичный символ, кроме символа новой строки. | /./ — все, что содержит один символ. |
^ | Обозначает начало строки, не включая символ /. | /^PH/ — любая строка, которая начинается с PH. |
$ | Обозначает шаблон в конце строки. | /com$/ — guru99.com,yahoo.com и т.д. |
* | Обозначает любое количество символов, ноль или больше. | /com*/ — computer, communication и т.д. |
+ | Требуется вхождение перед метасимволом символа (ов) хотя бы один раз. | /yah+oo/ — yahoo. |
Символ экранирования. | /yahoo+.com/ — воспринимает точку, как дословное значение. | |
[…] | Класс символов. | /[abc]/ — abc. |
a-z | Обозначает строчные буквы. | /a-z/ — cool, happy и т.д. |
A-Z | Обозначает заглавные буквы. | /A-Z/ — WHAT, HOW, WHY и т.д. |
0-9 | Обозначает любые цифры от 0 до 9. | /0-4/ — 0,1,2,3,4. |
Теперь рассмотрим сложный PHP regexp пример, в котором проверяется валидность адреса электронной почты:
Результат: адрес электронной почты name@company.com является валидным.
Пояснение шаблона «[/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+.[a-zA-Z.]$/] «
«’/…/’» начинает и завершает регулярное выражение.
«^[a-zA-Z0-9._-]» соответствует любым буквам в нижнем или верхнем регистре, цифрам от 0 до 9 и точкам, подчеркиваниям или тире.
«+@[a-zA-Z0-9-]» соответствует символу @, за которым следуют буквы в нижнем или верхнем регистре, цифры от 0 до 9 или дефисы.
«+.[a-zA-Z.]$/» указывает точку, используя обратную косую черту, затем должны следовать любые буквы в нижнем или верхнем регистре, количество символов в конце строки должно быть от 2 до 5.
Метасимволы являются полезными, когда речь идет о сопоставлении на соответствие шаблонам.
Заключение
- PHP regexp — это алгоритм поиска по шаблону;
- Регулярные выражения полезны при выполнении проверок валидности, создании HTML-шаблонов, которые распознают теги и т. д.;
- PHP имеет встроенные функции для работы с регулярными выражениями: preg_match, preg_split и preg_replace;
- Метасимволы позволяют создавать сложные шаблоны.
Найти в русском тексте все заглавные буквы и запомнить их порядковые номера
Приветствую. Учу РНР. Как можно реализовать поставленную задачу?
Это определенный «модуль» задачи, суть которой чуть в другом, но для начала нужно научиться выполнять это. В курсе о регулярных выражениях в РНР, только конкретного ответа, как отделить и оставить только заглавные буквы не могу найти. И как определить их порядковые номера в исходной строке?
Ну например, есть строка
Затем в строке $res должно быть «АВДЖ»;
А в массиве $num (0,2,4,6)
В тексте удалить все заглавные буквы русского алфавита
В данном тексте удалить все заглавные буквы русского алфавита
Напечатать в столбик все буквы латинского алфавита и их порядковые номера
Добрый день. Нужна помощь. Надо написать программу, которая напечатает в столбик все буквы.
В заданном тексте заменить все заглавные буквы русского алфавита на строчные
Составить программу, которая в заданном тексте заменяет все заглавные буквы русского алфавита на.
В данном тексте удалить все заглавные буквы латинского и русского алфавитов
В данном тексте удалить все заглавные буквы латинского и русского алфавитов.
$text = "АбВгДеЖ"; preg_match_all("/[А-ЯЁ]/i", $text, $matches); var_dump($matches);
array(1) < [0]=>array(4) < [0]=>string(1) "А" [1]=> string(1) "В" [2]=> string(1) "Д" [3]=> string(1) "Ж" > >
alexsamos33,
в результате на экране то, что во вложениях
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
/* $a = "Василий Петров"; function mb_str_split( $string ) return preg_split('/(? >;*/ $text = "АбВгДеЖ"; preg_match_all("/[А-ЯЁ]/i", $text, $matches); var_dump($matches); /* function cut($text) //$list = mb_str_split($text); $count=0; preg_match_all("/[А-ЯЁ]/i", $text, $matches); var_dump($matches); >; cut($a);*/ ?>
Сообщение от lampard14
Приветствую. Учу РНР. Как можно реализовать поставленную задачу?
Это определенный «модуль» задачи, суть которой чуть в другом, но для начала нужно научиться выполнять это. В курсе о регулярных выражениях в РНР, только конкретного ответа, как отделить и оставить только заглавные буквы не могу найти. И как определить их порядковые номера в исходной строке?
Ну например, есть строка
Код PHPВыделить код
1
$text = «АбВгДеЖ»;
Затем в строке $res должно быть «АВДЖ»;
А в массиве $num (0,2,4,6)
Помогите, пожалуйста.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
// Скрипт для строки в кодировке utf-8. // Кодировку можно изменить в переменной $charset. $charset = "utf-8"; $str = "АбВгДеЖ"; $len = mb_strlen($str, $charset); $res = ""; $num = []; for ($i = 0; $i $len; $i++) { $letter = mb_substr($str, $i, 1, $charset); if (mb_strtolower($letter, $charset) !== $letter) { $res .= $letter; $num[] = $i; } } echo '$res = '
.$res.PHP_EOL.'$num = '.print_r($num, true).'
';
$res = АВДЖ $num = Array ( [0] => 0 [1] => 2 [2] => 4 [3] => 6 )