Регулярные выражения в PHP.
PHP поддерживает два стиля синтаксиса регулярных выражений Что такое POSIX и perl. Стиль POSIX встроен в PHP по умолчанию, а стиль Perl доступен после компиляции с библиотекой PCRE библиотека регулярных выражений.
В PHP для работы с регулярными выражениями PCRE библиотека регулярных выражений используются несколько функций.
php.net: preg_match прекращает свою работу после первого найденного совпадения. Если необходимо найти, либо сосчитать все совпадения, следует воспользоваться функцией preg_match_all.
int preg_match ( string pattern, string subject [, array matches [, int flags]])
preg_match() возвращает FALSE в случае, если во время выполнения возникли какие-либо ошибки. В случае, если дополнительный параметр matches указан, он будет заполнен результатами поиска. Элемент $matches[0] будет содержать часть строки, соответствующую вхождению всего шаблона, $matches[1] – часть строки, соответствующую первой подмаске(то что находится внутри шаблона).
<?php /* * Обработка результата вывода утилиты ipcalc. Ключ -h позволяет получить результат в HTML. */ $IPs = '10.26.95.0/24'; $escaped_IPs = 'ipcalc -h '.escapeshellcmd($IPs); $output = shell_exec($escaped_IPs); preg_match('|<table(.*)</table>|Uis', $output, $matches); print_r($matches[0]); // результат с тегами <table></table>. Весь шаблон. print_r($matches[1]); // результат содержимое тегов <table></table>. ?>
preg_match('@^(?:https?://)?([^/]+)@i', $usr1, $matches); print_r($matches[0]);
preg_match_all
int preg_match_all(string pattern, string subject, array matches [, int flags [, int offset]])
Функция работает также, как и preg_match, но ищет не только первое вхождение, а все имеющиеся и складывает их в массив matches, который для данной функции (в отличие от preg_match()) является обязательным.
preg_replace - выполняет поиск и замену по регулярному выражению. Выполняет поиск в строке subject совпадений с шаблоном pattern и заменяет их на replacement. В случае, если параметр limit указан, будет произведена замена limit вхождений шаблона.
mixed preg_replace(mixed pattern, mixed replacement, mixed subject [, int limit])
<?php $str = 'foo o'; echo $str."\n"; $str = preg_replace('/\s\s+/', '', $str); echo $str."\n"; ?>
<?php $str = '2012-04-05'; echo $str."\n"; $str = preg_replace('/-/', '', $str); echo $str."\n"; ?>
В PHP существует две функции для поиска строк при помощи регулярных выражений ereg() и eregi(). Единственное отличие между ними функция eregi() нечувствительна к регистру.