несколько полезных примеров регулярок

  • XJIOP
  • 14 июля 2014 в 16:31
  • СисАдмин 
  • -= SYSOP =-
    • Рейтинг: 3
    • Комментариев: 398
    • Загрузили: 1.33 ТБ
    • Скачали: 481.88 ГБ
    Несколько полезных примеров регулярок, которые можно скопипастить по мере нужды. Также небольшая памятка по составлению и функциям.

    Примеры шаблонов

    foo – Слово foo
    ^foo – Наичнается с foo
    foo$ - Кончается с foo
    ^foo$ - Точное совпадение с foo
    [abc] – a, b или c
    [a-z] – Любая строчная буква
    [^A-Z] - Любой символ не в верхнем регистре
    (gif|jpg) - Совпадает либо gif либо jpeg
    [a-z]+ - Одна или более строчных букв
    [0-9.-] - Любое число, точка или минус
    ^[a-zA-Z0-9_]{1,}$ – Любое слово, в котором как минимум одна буква, число или _
    ([wx])([yz]) - wy, wz или xy, xz
    [^A-Za-z0-9] – Любой символ (не буква и не цифра)
    ([A-Z]{3}|[0-9]{4}) - Совпадает три буквы или четыре цифры

    Функции для работы

    preg_match() - Ищет совпадение по шаблону
    preg_match_all() - Ищет все совпадения по шаблону
    preg_replace() - Замена совпадения по шаблону
    preg_split() - Разбивка на несколько частей по шаблону
    preg_grep() - Возвращает массив вхождений, которые соответствуют шаблону
    preg_ quote() – Экранирует символы в регулярных выражениях

    Некоторые другие функции

    Проверить домен
    $url = "Нужный адрес";
    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, 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", '<span style="background:#5f c9f6">1</span>', $text);
    echo $text;
    Подсветить результаты поиска в wordpress
    Небольшой хак подсветки искомых слов для блога. Открываем search.php и ищет там строку:
    echo $title;
    И меняем ее на:
    $title = get_the_title();
    $keys= explode(" ",$s);
    $title = preg_replace('/('.implode('|', $keys) .')/iu',
    '<strong class="search-excerpt">\0</strong>',$title);
    И добавляем в css
    strong.search-excerpt { background: yellow; }
    Получаем все картинки со страницы
    $url = "Нужный адрес";
    $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);
    Убираем повторяющиеся точки с запятыми
    preg_replace("/\.+/i", ".", $text);
    Проверяем тег – XML/HTML
    function get_tag( $tag, $xml ) {
    $tag = preg_quote($tag);
    preg_match_all('{<'.$tag.'[^>]*>(.*?).'}',$xml,$match es,PREG_PATTERN_ORDER);
    return $matches[1];
    }
    Ищем совпадения по тегам – XML/HTML
    function get_tag( $tag, $xml ) {
    $tag = preg_quote($tag);
    preg_match_all('{<'.$tag.'[^>]*>(.*?).'}',$xml,$match es,PREG_PATTERN_ORDER);
    return $matches[1];
    }
    Ищем совпадения по тегам с установленным атрибутом – XML/HTML
    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.";
    }
    Находим заголовок страницы
    $fp = fopen("Нужный адрес","r");
    while (!feof($fp) ){
    $page .= fgets($fp, 4096);
    }
    $titre = eregi("",$page,$regs);
    echo $regs[1];
    fclose($fp);
    Распарсиваем логи апача
    //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)[^"]*)"$'
    Заменяем двойные кавычки на безопасный аналог
    preg_replace('B"b([^"x84x93x94rn]+)b"B', '?1?', $text);
    Проверяем стойкость пароля
    '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'
    Используем регулярку для вывода всех картинок из поста wordpress
    Например, можно вывести нужную картинку как превью или показать их в архивах.
    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;
    ?>
    Вcтавляем смайлики в текст
    $texte='A text with a smiley <img src="адрес смайлика" alt=":-)" class="wp-smiley"> ';
    echo str_replace(':-)','<img src="smileys/souriant.png">',$text);

    --------------------

    for (;;) { echo rand(0,1); }
    Файлы обмена предоставлены пользователями трекера, администрация не несет ответственность за их содержание. Большая просьба не заливать файлы, защищенными авторскими правами, а так же файлы с нелегальным содержанием.
    Рейтинг торрент трекеров