Изучаем PHP программирование

   Search   

Русская версия | English version   

Скрипты :: Секреты профессионалов :: Link :: FAQ   Пишите письма  



 

главная :: основы 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

Designed by Fedin
All right reserved
2003-2004
Hosted by uCoz