главная :: основы PHP
Заголовок
Функции РНР для работы с регулярными выражениями (Perl-совместимые)
В РНР существует пять функций поиска по шаблону с использованием Perl-совместимых регулярных выражений:
preg_match( );
preg_match_all( );
preg_replace( );
preg_split( );
preg_grep( ).
Эти функции подробно описаны в следующих разделах.
preg_match( )
Функция pregjnatch( ) ищет в заданной строке совпадение для шаблона. Если совпадение найдено, возвращается TRUE, в противном случае
возвращается FALSE. Синтаксис функции pregjnatch( ):
int pregjnatch (string шаблон, string строка [, array совпадения})
При передаче необязательного параметра совпадения массив заполняется совпадениями различных подвыражений, входящих в основное
регулярное выражение. В следующем примере функция preg_match( ) используется для проведения поиска без учета регистра:
$linе = "Vi is the greatest word processor ever created!";
// Выполнить поиск слова "Vi" без учета регистра символов:
if (preg_match("/\bVi\b\i", $line, $matcn)) :
print "Match found!";
endif;
// Команда if в этом примере возвращает TRUE
preg_match_all( )
Функция preg_match_all( ) находит все совпадения шаблона в заданной строке.
Синтаксис функции preg_match_all( ):
Int preg_match_all (string шаблон, string строка, array совпадения [, int порядок])
Порядок сохранения в массиве совпадения текста, совпавшего с подвыражениями, определяется необязательным параметром порядок. Этот
параметр может принимать два значения:
PREG_PATTERN_ORDER — используется по умолчанию, если параметр порядок не указан. Порядок, определяемый значением
PREG_PATTERN_ORDER, на первый взгляд выглядит не совсем логично: первый элемент (с индексом 0) содержит массив совпадений
для всего регулярного выражения, второй элемент (с индексом 1) содержит массив всех совпадений для первого подвыражения в
круглых скобках и т. д.;
PREG_SET_ORDER — порядок сортировки массива несколько отличается от принятого по умолчанию. Первый элемент (с индексом 0)
содержит массив с текстом, совпавшим со всеми подвыражениями в круглых скобках для первого найденного совпадения. Второй
элемент (с индексом 1) содержит аналогичный массив для второго найденного совпадения и т. д.
Следующий пример показывает, как при помощи функции preg_match_al( ) найти весь текст, заключенный между тегами HTML ...:
$user_info = "Name: Rasmus Lerdorf Title: PHP Guru";
preg_match_all ("/(.*)<\/b>/U", Suserinfo. $pat_array);
print $pat_array[0][0]." ".pat_array[0][l]."\n":
Результат:
Rasmus Lerdorf
PHP Guru
preg_replace( )
Функция preg_repl ace( ) работает точно так же, как и ereg_replасе( ), за одним исключением — регулярные выражения могут использоваться в
обоих параметрах, шаблон и замена. Синтаксис функции preg_replace( ):
mixed preg_replace (mixed шаблон, mixed замена, mixed строка [, int порог])
Необязательный параметр порог определяет максимальное количество замен в строке. Интересный факт: параметры шаблон и замена могут
представлять собой масивы. Функция preg_replace( ) перебирает элементы обоих массивов и выполняет замену по мере их нахождения.
preg_split( )
Функция preg_spl it( ) аналогична split( ) за одним исключением — параметр шаблон может содержать регулярное выражение. Синтаксис
функции preg_split( ):
array preg_split (string шаблон, string строка [, int порог [, int флаги]])
Необязательный параметр порог определяет максимальное количество элементов, на которые делится строка. В следующем примере функция
preg_split( ) используется для выборки информации из переменной.
$user_info="+wj+++Gilmore+++++wjgi]more@hotmail.com
+++++++Columbus+++OH";
$fields = preg_split("/\+{1.}/", $user_info);
while ($x < sizeof($fields)):
print $fields[$x]. " ";
$x++;
endwhile;
Результат:
WJ
Gilmore
wjgilmore@hotmail.com
Columbus
OH
preg_grep( )
Функция preg_grep( ) перебирает все элементы заданного массива и возвращает все элементы, в которых совпадает заданное регулярное
выражение. Синтаксис функции preg_grep():
array preg_grep (string шаблон, array массив)
Пример использования функции preg_grep( ) для поиска в массиве слов, начинающихся на р:
$foods = array ("pasta", "steak", "fish", "potatoes");
// Поиск элементов, начинающихся с символа "р".
// за которым следует один или несколько символов
$p_foods = preg_grep("/p(\w+)/", $foods):
$х = 0;
while ($x < sizeof($p_foods)) :
print $p_foods[$x]. " ";
$Х++;
endwhile;
Результат:
pasta
potatoes
|