ДОБРО ПОЖАЛОВАТЬ НА САЙТ PHPLIST Всё о PHP |
Написать письмо авторам |
Perl-совместимые регулярные выраженияPHP поддерживает ряд функций для работы с Perl-совместимыми регулярными выражениями (PCRE - Perl Compatible Regular Expression). Такие выражения заключаются в ограничители, в качестве которых, как правило, используется прямой слеш: /mail/ Это выражение соответствует строке, содержащей слово "mail". За ограничителями могут следовать модификаторы, уточняющие регулярное выражение. Наиболее часто используют следующие модификаторы:
Для PCRE-выражений характерно применение общих типов символов, которые аналогичны классам символов для регулярных выражений в стиле POSIX. Наиболее часто встречающиеся общие типы символов приведены ниже.
Теперь рассмотрим основные функции, которые есть в PHP для работы с PCRE-выражениями. preg_match()int preg_match (string pattern, string subject [, array matches]) Эта функция ищет в строке subject соответствие регулярному выражению pattern. Если задан необязательный параметр matches, то результаты поиска помещаются в массив. Приведем несколько примеров. <? $str = "PHP один из лучших языков программирования для Web"; if (preg_match ("/php/i", $str)) { echo("Соответствие найдено"); } else { echo("Соответствие не найдено"); } ?> Результат: Соответствие найдено <? $str = "PHP один из лучших языков программирования для Web"; if (preg_match ("/\bweb\b/i", $str)) { echo("Соответствие найдено"); } else { echo("Соответствие не найдено"); } ?> Результат: Соответствие найдено <? // получаем www-адрес (имя хоста) из url $url = "http://php.net/download.html"; preg_match("/^(http:\/\/)?([^\/]+)/i", $url, $matches); $host = $matches[2]; echo("www-адрес: $host"); echo("<br>"); // получаем последние два сегмента имени хоста (доменное имя) preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $matches); echo "доменное имя: {$matches[0]}\n"; ?> Результат: www-адрес: www.php.net доменное имя: php.net preg_replace()mixed preg_replace (mixed pattern, mixed replacement, mixed subject [,int limit]) Эта функция ищет в строке subject соответствия регулярному выражению pattern, и заменяет их на replacement. Необязательного параметр limit задает число соответствий, которые надо заменить. Если этот параметр не указан, или равен -1, то заменяются все найденные соответствия. <? $str = "May 15, 2003"; $pattern = "/(\w+) (\d+), (\d+)/i"; $replacement = "1 \${1} \$3"; print preg_replace($pattern, $replacement, $str); ?> Результат: 1 May 2003 А вот как можно написать функцию, которая будет практически полным аналогом функции htmlspecialchars. <? function my_htmlspecialchats($document) { $search = array ("''si", "'<[\/\!]*?[^<>]*?>'si", "'([\r\n])[\s]+'", "'&(quot|#34);'i", "'&(amp|#38);'i", "'&(lt|#60);'i", "'&(gt|#62);'i", "'&(nbsp|#160);'i", "'&(iexcl|#161);'i", "'&(cent|#162);'i", "'&(pound|#163);'i", "'&(copy|#169);'i", "'(\d+);'e"); $replace = array ("", "", "\\1", "\"", "&", "<", ">", " ", chr(161), chr(162), chr(163), chr(169), "chr(\\1)"); $text = preg_replace ($search, $replace, $document); return $text; } $doc = "
|
Наверх |