Модификаторы регулярных выражений
Механизм регулярных выражений позволяет добавлять модификаторы, влияющие на обработку регулярного выражения. Ниже рассмотрены наиболее употребительные.
Рассмотрим несколько примеров: Проверка доменного имени Проверяем, является ли строка правильным доменным именем $url = "http://chyvakoff.px6.ru/";if (preg_match('/^(http|https|ftp)://([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):?(d+)?/?/i', $url)) { echo "Your url is ok.";} else { echo "Wrong url.";}Подсветка слова в тексте Это очень полезное регулярное выражение, с его помощью вы можете найти нужное слово и подсветить его. Особенно полезно для отображения результатов поиска. $text = "Sample sentence from KomunitasWeb. Now we learn regex. Regular expressions (abbreviated as regex or regexp, with plural forms regexes, regexps, or regexen) are written in a formal language that can be interpreted by a regular expression processor";$text = preg_replace("/b(regex)b/i", '<span style="background:#5fc9f6">1</span>', $text);echo $text;Подсветка результатов поиска в WordPress блоге Как уже говорилось в предыдущем примере, этот пример кода, удобно использовать в выдаче поисковых результатов и есть отличный способ внедрить эту функцию в wordpress-блог. Откройте ваш файл search.php, и найдите функцию the_title(). Замените ее следующим кодом: echo $title;Теперь, выше этой строки, добавьте этот код: $title = get_the_title();$keys= explode(" ",$s);$title = preg_replace('/('.implode('|', $keys) .')/iu','<strong class="search-excerpt">\0</strong>',$title);Сохраните файл search.php, и откройте style.css. Добавьте следующую строку: strong.search-excerpt { background: yellow; }Получение всех картинок из HTML-документа Если вам когда-нибудь требовалось получить все картинки с веб-страницы, этот код должен быть Вы легко сможете создать загрузчик изображений с помощью возможностей cURL $images = array();preg_match_all('/(img|src)=("|')[^"'>]+/i', $data, $media);unset($data);$data=preg_replace('/(img|src)("|'|="|=')(.*)/i',"$3",$media[0]);foreach($data as $url){ $info = pathinfo($url); if (isset($info['extension'])) { if (($info['extension'] == 'jpg') || ($info['extension'] == 'jpeg') || ($info['extension'] == 'gif') || ($info['extension'] == 'png')) array_push($images, $url); }}Удаление повторяющихся слов (не чувствителен к регистру) Во время печатания, часто повторяются слова? Поможет это регулярное выражение. $text = preg_replace("/s(w+s)1/i", "$1", $text);Удаление повторяющейся пунктуации То же самое, только для пунктуации. Попрощайтесь с двойными запятыми. $text = preg_replace("/.+/i", ".", $text);Поиск XML/HTML тэгов Эта простая функция, принимает два аргумента. Первый – это тэг, который вам нужно найти, и второй – это переменная, содержащая XML или HTML. Повторюсь, эту функцию очень удобно использовать вместе с cURL. function get_tag( $tag, $xml ) { $tag = preg_quote($tag); preg_match_all('{<'.$tag.'[^>]*>(.*?)</'.$tag.'>.'}', $xml, $matches, PREG_PATTERN_ORDER); return $matches[1];}Поиск XHTML/XML тэгов с определенным значением атрибута Эта функция очень похожа на предыдущую, за исключением того, что вы можете задать тегу нужный атрибут. Например, вы легко сможете найти <div id=”header”>. function get_tag( $attr, $value, $xml, $tag=null ) { if( is_null($tag) ) $tag = '\w+'; else $tag = preg_quote($tag); $attr = preg_quote($attr); $value = preg_quote($value); $tag_regex = "/<(".$tag.")[^>]*$attr\s*=\s*". "(['\"])$value\\2[^>]*>(.*?)<\/\\1>/" preg_match_all($tag_regex, $xml, $matches, PREG_PATTERN_ORDER); return $matches[3];}Поиск шестнадцатеричных значений цветов Еще один полезный инструмент для веб-разработчика! Он позволяет вам находить/проверять шестнадцатеричные значение цвета. $string = "#555555";if (preg_match('/^#(?:(?:[a-fd]{3}){1,2})$/i', $string)) {echo "example 6 successful.";}Поиск заголовка статьи Этот фрагмент кода найдет и выведет на экран текст, находящийся внутри тэгов <title></title>, на html-странице. $fp = fopen("http://www.catswhocode.com/blog","r");while (!feof($fp) ){ $page .= fgets($fp, 4096);} $titre = eregi("<title>(.*)</title>",$page,$regs);echo $regs[1];fclose($fp);Парсинг логов Apache Большинство сайтов запущено на всем известном веб-сервере Apache. Если ваш сайт находится в их числе, почему бы не использовать PHP и регулярные выражения для разбора логов апача? //Logs: Apache web server//Successful hits to HTML files only. Useful for counting the number of page views.'^((?#client IP or domain name)S+)s+((?#basic authentication)S+s+S+)s+[((?#date and time)[^]]+)]s+"(?:GET|POST|HEAD) ((?#file)/[^ ?"]+?.html?)??((?#parameters)[^ ?"]+)? HTTP/[0-9.]+"s+(?#status code)200s+((?#bytes transferred)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#user agent)[^"]*)"$' //Logs: Apache web server//404 errors only'^((?#client IP or domain name)S+)s+((?#basic authentication)S+s+S+)s+[((?#date and time)[^]]+)]s+"(?:GET|POST|HEAD) ((?#file)[^ ?"]+)??((?#parameters)[^ ?"]+)? HTTP/[0-9.]+"s+(?#status code)404s+((?#bytes transferred)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#user agent)[^"]*)"$'
Популярное: Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы... Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (680)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |