регулярные выражения, функция preg match all
PHP, как и полагается современному языку программирования, предлагает разработчику набор функций для использования регулярных выражений. Можно искать вхождения строк в другие строки по сложным критериям.
HTML, CSS, XML и другие формализованные файлы — классические задачи для применения функции preg match all. Не меньший эффект дает поиск адресов, фамилий, номеров телефонов, e-mail и другой информации в неформализованных текстах.
Формат функции
PHP предлагает две функции поиска: preg match и preg match all. Первая ищет первое вхождение шаблона в строке, вторая — все вхождения. Иногда используют термин «совпадение с шаблоном». В первом случае результат функции — «строка совпадает с шаблоном», во втором случае — «в строке найдены совпадения с шаблоном». Формально термин «совпадение» более точно отражает суть, но естественный контекст операции обычно — «поиск» информации. На практике востребовано и одно, и другое. Ниже рассмотрен формат функций.
Символы на PHP: строка в число и обратно
PHP появился значительно позже первых языков программирования, которые начали строить мир программ…
Результат функции — число, количество совпадений. Все найденные совпадения записываются в массив — matches. В случае функции preg match all можно указать порядок сортировки массива:
- PREG_PATTERN_ORDER;
- PREG_SET_ORDER.
Сортировка по первому варианту группирует результаты поиска по номеру регулярного выражения (значение по умолчанию). Во втором случае результаты группируются по месту их нахождения в строке.
Символ — элемент шаблона
Важно помнить, что шаблон оперирует символами. Программирование уже давно забыло, что такое тип данных «символ». Современные языки не опускаются ниже понятия «строка», но в отношении шаблона надо понимать: здесь манипулируют символами.
Построение шаблона — это, прежде всего, указание нужной последовательности символов. \.]+\.[a-z]{2,3}/ — вариант для распознавания e-mail.
Применение собственных шаблонов для preg match all, примеры их в интернете, анализ кода страниц сайтов и другие источники позволяют сформировать собственную библиотеку шаблонов.
Вариантов для поиска информации может быть множество. В частности, приведенные последние две конструкции можно смоделировать иначе. Во многих случаях предпочтение будет иметь тот шаблон, который быстрее и точнее обеспечит нужное совпадение. Применение на PHP preg match all, как и аналогичных функций на других языках, требует практики, внимания и предварительной проверки правильности шаблонов.
php — использование регулярных выражений в условиях оператора if
спросил
Изменено 12 лет, 1 месяц назад
Просмотрено 48 тысяч раз
Часть коллектива PHPЯ пытаюсь получить оператор php if, чтобы иметь правило, где если установленная переменная равна «view-##», где # означает любое число. каким будет правильный синтаксис для настройки оператора if с этим условием? 9вид-\d\d$/»,$переменная)) { …. }
[РЕДАКТИРОВАТЬ] ОП дополнительно спрашивает, может ли он изолировать номера.
В этом случае вам необходимо (а) заключить в скобки цифры в регулярном выражении и (б) добавить третий параметр в preg_match()
.
Третий параметр возвращает совпадения, найденные регулярным выражением. Он вернет массив совпадений: нулевым элементом массива будет вся совпадающая строка (в вашем случае такая же, как и вход), остальные элементы массива будут соответствовать любым наборам скобок в выражении. Поэтому 9представление-(\d\d)$/»,$variable,$matches)) { $результат = $совпадения[1]; }
Вы должны использовать preg_match. Пример:
if(preg_match(<>, $variable)) { $переменная1 = 1; } еще { $переменная2 = 2; }
Также рассмотрите тернарный оператор, если вы выполняете только присваивание:
$variable2 = preg_match(<>, $variable) ? 1 : 2;
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью GoogleОпубликовать как гость
Электронная почтаТребуется, но никогда не отображается
Опубликовать как гость
Электронная почтаТребуется, но не отображается
Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.
php regex выражение preg_match для проверки строки для A-Za-z0-9, пробела и общей пунктуации
спросил
Изменено 5 лет, 2 месяца назад
Просмотрено 1к раз
Часть коллектива PHPУ меня проблемы с регулярным выражением. Я хочу использовать php preg_match, чтобы подтвердить, что строка ТОЛЬКО содержит буквы верхнего/нижнего регистра, цифры, пробелы и знаки пунктуации, такие как…
запятая, точка, знак плюс, тире, восклицательный знак, двоеточие, точка с запятой, круглые скобки
Вопрос: чему будет равно $regex в приведенном ниже примере?
:("; } ?>
Я смотрел видео, гуглил часами и до сих пор не могу понять это правильно.
Спасибо за любую помощь!
- php
- регулярное выражение
- предварительное совпадение 9[a-zA-Z0-9,.!?\-\+:;() ]*$/
См. примеры: Регулярное выражение для разрешения только букв, цифр, пробелов, запятых, точек?
Поиск в Google: preg_match числа буквы знаки препинания
Изменить: вы можете проверить здесь https://www.functions-online.com/preg_match.html
2Все ответы были полезными. Ответ четвертой птицы сработал для меня. Спасибо.
Я добавил несколько дополнительных знаков препинания и 3, которые нужно было экранировать… и (пока что) получил вот это… 9говорит начать пытаться сопоставить с 1-м элементом в [] [ включает в себя элементы OK — начало пробел аз строчные буквы 0-9 номера , запятая . период + знак плюс ! восклицательный знак : двоеточие ; точка с запятой (открыть скобку ) закрыть скобку — бросаться _ нижнее подчеркивание \\ обратная косая черта (примечание) \[ открытая квадратная скобка (примечание) \] закрыть скобку копья (примечание) ] заключает элементы OK — конец + соответствует указанным элементам 1 или более раз $ продолжить сопоставление с последним элементом в строке / — закрывающий разделитель регулярного выражения я флаг нечувствительный к регистру, поэтому буквы верхнего и нижнего регистра будут совпадать
примечание: обратная косая черта в начале — управляющий символ
1Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google Зарегистрироваться через Facebook Зарегистрируйтесь, используя электронную почту и парольОпубликовать как гость
Электронная почтаТребуется, но никогда не отображается
Опубликовать как гость
Электронная почтаТребуется, но не отображается
Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.