За последние 24 часа нас посетили 34978 программистов и 1756 роботов. Сейчас ищут 826 программистов ...

Обработка гипертекста

Тема в разделе "PHP для новичков", создана пользователем -Vladimir-, 5 дек 2009.

  1. -Vladimir-

    -Vladimir- Активный пользователь

    С нами с:
    20 сен 2009
    Сообщения:
    139
    Симпатии:
    0
    Имеется html-файл, который нужно обработать по такому сценарию:

    фрагмент 1
    фрагмент 2
    новый фрагмент


    То есть, первая строка - "от", вторая - "до", третья - "заменить на". Строки 4, 5, 6 и т.д. аналогичны. Всё это в текстовом файле.
    Как это сделать с помощью php?
     
  2. Бородин Вадим

    Бородин Вадим Активный пользователь

    С нами с:
    30 ноя 2009
    Сообщения:
    8
    Симпатии:
    0
    Попробуйте переформулировать вопрос, понять, что вы имели в виду непросто =)
     
  3. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    где-то тут я это уже видел на днях
     
  4. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Ну например так:
    PHP:
    1. <?php
    2. $arr=file("pattern.txt");
    3.  
    4. $len=count($arr);
    5.  
    6. if ($len%3!=0) die ("Неверные данные в файле");
    7.  
    8. $htmlFile=file_get_contents("myFile.html");
    9.  
    10. for (i=0;i<len;i=i+3){
    11.     $from=$arr[$i];
    12.     $to=$arr[$i+1];
    13.     $rep=$arr[$i+2];
    14.     $pattern="#$from(.*?)$to#s";
    15.     preg_replace($pattern, $rep,$htmlFile);
    16. }
    17.  
    18. ?>
    Замечания:
    1. Если не хочется использовать синтаксис регулярных выражений в txt файле, то нужно экранировать спец символы.
    2. Регулярное выражение может не работать, я его не проверял.
    3. Можно попробовать поиграться с файловыми и строковыми функциями и вообще отказаться от регулярных выражений.
     
  5. -Vladimir-

    -Vladimir- Активный пользователь

    С нами с:
    20 сен 2009
    Сообщения:
    139
    Симпатии:
    0
    Выдаёт ошибку
    Код (Text):
    1. Parse error: syntax error, unexpected '=', expecting ';' in Z:\home\localhost\www\pars.php on line 10
     
  6. LuckyScrat

    LuckyScrat Активный пользователь

    С нами с:
    16 июн 2009
    Сообщения:
    176
    Симпатии:
    0
    Адрес:
    Москва
    знаки $ в 10 строке пропущены для переменных
     
  7. -Vladimir-

    -Vladimir- Активный пользователь

    С нами с:
    20 сен 2009
    Сообщения:
    139
    Симпатии:
    0
    Обработанный контент не выдаётся
     
  8. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    echo $htmlFile;
     
  9. -Vladimir-

    -Vladimir- Активный пользователь

    С нами с:
    20 сен 2009
    Сообщения:
    139
    Симпатии:
    0
    А так выдаётся необработанная страница.

    Что-то вообще башка сегодня не варит...
     
  10. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Значит:
    echo preg_replace($pattern, $rep,$htmlFile);

    =))
     
  11. -Vladimir-

    -Vladimir- Активный пользователь

    С нами с:
    20 сен 2009
    Сообщения:
    139
    Симпатии:
    0
    то же самое

    ещё и так пробовал:
    $content=preg_replace($pattern, $rep,$htmlFile);
    echo $content;

    не действует почему-то
     
  12. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Значит я где-то ошибся. =))
    Проверьте правильные ли данные в переменных $from, $to, $rep.
    Составьте правильное регулярное выражение на простых данных и расширьте его до любых данных.