1) Проверка доменного имени
Проверяем, является ли строка правильным доменным именем
1 2 3 4 5 6 | 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." ; } |
2) Подсветка слова в тексте
Полезное регулярное выражение, с помощью которого вы сможете найти и подсветитьнужное вам.
1 2 3 | $text = "Sample sentence from KomunitasWeb, regex has become popular in web programming. Now we learn regex. According to wikipedia, 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" , '1' , $text ); echo $text ; |
3) Подсветка результатов поиска в WordPress блоге
Как уже говорилось в предыдущем примере, этот пример кода, удобно использовать в выдаче поисковых результатов и есть отличный способ внедрить эту функцию в wordpress-блог.
1 2 | echo $title ; |
1 2 3 4 5 6 7 8 9 10 11 12 | $title = get_the_title(); $keys = explode ( " " , $s ); $title = preg_replace( '/(' .implode( '|' , $keys ) . ')/iu' , '\0' , $title ); ?> |
1 2 | strong.search-excerpt { background: yellow; } |
4) Получение всех картинок из HTML-документа
Если вам когда-нибудь требовалось получить все картинки с веб-страницы, этот код должен быть Вы легко сможете создать загрузчик изображений с помощью возможностей cURL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | $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 ); } } |
1 | $text = preg_replace( "/s(w+s)1/i" , "$1" , $text ); |
6) Удаление повторяющейся пунктуации
То же самое, только для пунктуации. Попрощайтесь с двойными запятыми.
1 2 3 | $text = preg_replace( "/.+/i" , "." , $text ); |
7) Поиск XML/HTML тэгов
Эта простая функция, принимает два аргумента. Первый – это тэг, который вам нужно найти, и второй – это переменная, содержащая XML или HTML. Повторюсь, эту функцию очень удобно использовать вместе с cURL.
1 2 3 4 5 6 7 8 9 10 11 12 | function get_tag( $tag , $xml ) { $tag = preg_quote( $tag ); preg_match_all( '{<' . $tag .'[^>]*>(.*?) . '}' , $xml , $matches , PREG_PATTERN_ORDER); return $matches [1]; } |
8) Поиск XHTML/XML тэгов с определенным значением атрибута
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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]; } |
1 2 3 4 5 6 | $string = "#555555" ; if (preg_match( '/^#(?:(?:[a-fd]{3}){1,2})$/i' , $string )) { echo "example 6 successful." ; } |
1 2 3 4 5 6 7 8 9 10 11 12 | while (! feof ( $fp ) ){ $page .= fgets ( $fp , 4096); } $titre = eregi (" (.*)", $page , $regs ); echo $regs [1]; fclose( $fp ); |
11) Парсинг логов Apache
Большинство сайтов запущено на всем известном веб-сервере Apache. Если ваш сайт находится в их числе, почему бы не использовать PHP и регулярные выражения для разбора логов апача?
1 2 3 4 5 6 7 8 9 10 | //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)[^"]*)"$' |
12) Замена двойных кавычек "умными” кавычками
Если вы любитель типографики, вам понравится это регулярное выражение, заменяющее обычные двойные кавычки, на "умные кавычки”. Похожее регулярное выражение используется в wordpress в контенте страницы.
1 2 | preg_replace( 'B"b([^"x84x93x94rn]+)b"B' , '?1?' , $text ); |
13) Комплексная проверка пароля
1 2 3 | 'A(?=[-_a-zA-Z0-9]*?[A-Z])(?=[-_a-zA-Z0-9]*?[a-z])(?=[-_a-zA-Z0-9]*?[0-9])[-_a-zA-Z0-9]{6,}z' |
14) WordPress: Использование регулярного выражения для получения картинок из записи
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> <?php $szPostContent = $post ->post_content; $szSearchPattern = '~<img [^>]* />~' ; // Run preg_match_all to grab all the images and save the results in $aPics preg_match_all( $szSearchPattern , $szPostContent , $aPics ); // Check to see if we have at least 1 image $iNumberOfPics = count ( $aPics [0]); if ( $iNumberOfPics > 0 ) { // Now here you would do whatever you need to do with the images // For this example the images are just displayed for ( $i =0; $i < $iNumberOfPics ; $i ++ ) { echo $aPics [0][ $i ]; }; }; endwhile ; endif ; ?> |
15) Генерация автоматических смайлов
Другая функция, используемая в wordpress – позволяет автоматически заменять символы смайлов на картинку смайла.
1 2 3 4 | $texte = 'A text with a smiley :-)' ; echo str_replace ( ':-)' , '<img src="smileys/souriant.png">' , $texte ); |