Регулярные выражения

Тема в разделе 'PHP', создана пользователем XmP, 10 май 2011.

  1. XmP ADD ebx, 110h

    В этой теме вы тоже можете показать своё регулярное выражение - в помощь новичкам.

    Теги:
    парсер парсить как парсить регулярка помогите составить регулярку парсить страницу сокеты cURL всё парсить парсить много страниц пишим простой парсер.
  2. XmP ADD ebx, 110h

    Довольно часто новички задают вопрос, а как же вывести информацию заключённую между какими-либо тегами.
    В этом случаем поможет такое регулярное выражение:
    PHP:

    "/До(.*?)После/is"
    Однако не стоит забывать, что нужно экранировать кавычки и скобки, т е если нужно получить такой текст:
    PHP:

    <center style="df">Текст</center>
    то понадобиться такая регулярка:
    PHP:

    "/<center style=\"df\">(.*?)<\/center>"
    Если на странице несколько ссылок, то мы можем воспользоваться функцией preg_match_all.
    Так же необходимо помнить, что браузер частенько искажает HTML код на странице, и выводит немного другой код.
    Что б получить нормальный HTML код, нужно получить страницу другими средствами, например этим кодом:
    PHP:

    <?php
    $fh 
    fopen('text.txt''a+');
          
    $ch curl_init();
          
    curl_setopt($chCURLOPT_URL'http://site.ru/');
          
    curl_setopt($chCURLOPT_HEADERfalse);
          
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
          
    curl_setopt($chCURLOPT_CONNECTTIMEOUT30);
          
    $data curl_exec($ch);
          
    curl_close($ch);
    fwrite($fh$fh);
    fclose($fh);
    ?>
    Ну а что б вы окончательно всё поняли, вот пример простого парсера:
    PHP:

          $ch 
    curl_init();
          
    curl_setopt($chCURLOPT_URL'http://studentbank.ru/');
          
    curl_setopt($chCURLOPT_HEADERfalse);
          
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
          
    curl_setopt($chCURLOPT_CONNECTTIMEOUT30);
          
    $data curl_exec($ch);
          
    curl_close($ch);
    preg_match_all("/<td width=\"93%\">(.*?)<\/td>/is"$data$reslist);
    $reslist $reslist[1];
    print_r($reslist);
  3. Khrome Exterminate!

    Функция, которая преобразует bbCode в HTML. Также, идет полная обработка текста, и некоторые символы преобразовываются в HTML сущности.
    Немного теории:
    Не многим новичкам пока известно, что функция preg_replace умеет обрабатывать одномерные массивы. При этом, номер элемента в массиве с рег. выражениями должен соответствовать номеру элемента в массиве с заменителями.
    Чтобы было малость наглядней, приведу такой пример(для начала):
    PHP:
    <?php
    $p_reg 
    = array("/&/is"); // рег. выражение
    $p_rep = array("&"); // заменитель
    ?>
    Т.е. здесь, номер элемента в массиве с регулярным выражением соответствует номеру элемента в массиве заменителе.
    Функцию preg_replace вам в данном случае необходимо использовать всего один раз! Это довольно удобно и не утяжеляет ваш код. А теперь, после этой теории, вот вам и функция.
    PHP:
    <?php
    function TextBBCode($text) {
        
    $text htmlspecialchars($text);
        
    $regex = array("/\[b\](.*)\[\/b\]/is""/\[i\](.*)\[\/i\]/is""/\[u\](.*)\[\/u\]/is",
                    
    "/&/is""/\"/is""/\'/is"); // массив с bb кодами
        
    $repls = array("<strong>$1</strong>""<em>$1</em>",
                    
    "<u>$1</u>""&"""""'"); // заменители
        
    $text preg_replace($regex$repls$text); // выполняем преобразование
        
    return nl2br($text); // возвращаем результат
    }
    // и для примера скажем знаменитую фразу:
    echo TextBBCode("[b]i'll[/b][i]be[/i][u]back[/u]");
    ?>
    Beaten_Sect0r, f-duck и XmP нравится это.
  4. XmP ADD ebx, 110h

    Ещё один скрипт парсинга, без ООП, небольшой. Для новичков понятный, но уже сложнее: ***Для просмотра ссылок необходимо войти или зарегистрироваться***
    Admin нравится это.

Поделиться этой страницей