[help]: RegExp для удаления всех символов в нутри определённого тега

Тема в разделе "Регулярные выражения", создана пользователем zloba00, 21 ноя 2008.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. zloba00

    zloba00

    Регистр.:
    28 окт 2008
    Сообщения:
    244
    Симпатии:
    34
    Есть около 2 миллионов файлов :), нужно в каждом из них удалить всё что находиться между тегами <script>random code goes here</script>. Для простых модификаций текста при помощи regexp я использую EditPlus. Какой regexp для этого использовать? Чем лучше это реализовать? Желательно, чтобы _это_ могло залогиниться по FTP и шерстить там :yahoo:. Ну это в идеале. А так буду благодарен любой помощи, хотя бы если бы указали, какой RegExp использовать.
     
  2. D@nil

    D@nil

    Регистр.:
    1 окт 2006
    Сообщения:
    338
    Симпатии:
    122
    Код:
    $html = file_get_contents ( $file );
    $html = preg_replace ( "'<script>(.+?)</script>'si", '', $html );
    file_put_contents ( $file, $html );
    
     
    Stripe и zloba00 нравится это.
  3. zloba00

    zloba00

    Регистр.:
    28 окт 2008
    Сообщения:
    244
    Симпатии:
    34
    Благодарствую, но в локальном редакторе editPlus данный regexp - <script>(.+?)</script> - работать отказался :confused: ... может кто подскажет какой он должен быть.
     
  4. zloba00

    zloba00

    Регистр.:
    28 окт 2008
    Сообщения:
    244
    Симпатии:
    34
    У меня так и не получилось заставить скрипт заработать, т.е. подсунуть в корень папки с файлами на сервере и запустить. В PHP я не силен. Не мог бы ты показать полный код скрипта в работоспособном виде? И не понятно вот еще что: он пробежит по всем html файлам в паке ... ? Вообщем внесите ясность :confused:
     
  5. HatoL

    HatoL

    Регистр.:
    5 фев 2008
    Сообщения:
    206
    Симпатии:
    36
    товарищ, учите PHP
    PHP:
    $file dirname(__FILE__) . '/file.html'// Вместо /file.html введите свой путь к файлу (относительный папки, из которой запускается скрипт)
    $html file_get_contents($file);
    $html preg_replace("'<script>(.+?)</script>'si"''$html);
    file_put_contents($file$html);
     
  6. zetar

    zetar

    Регистр.:
    18 май 2007
    Сообщения:
    497
    Симпатии:
    348
    обрабатывает все файлы *.html
    в текущем каталоге
    PHP:
    $dir dirname(__FILE__);
    $files=glob("{$dir}/*.html");
    foreach(
    $files as $file){
        echo 
    "Convert: {$file}\n";
        
    $html file_get_contents($file);
        
    $html preg_replace("'<script>(.+?)<\/script>'si",""$html);
        
    file_put_contents($file$html); 
        
    // вместо, file_put_contents не везде работает
        /*
        $h=fopen($file,'w+');
        if ($h){
            @fwrite($h,$html);
            @fclose($h);
        }
        */ 
        
    unset($html);

     
    alexzh и zloba00 нравится это.
  7. B1rdEX

    B1rdEX Постоялец

    Регистр.:
    30 июн 2008
    Сообщения:
    141
    Симпатии:
    26
    а если не <script>, а, например, <script charset=windows-1251>?

    "'<script[^>]+>(.+?)<\/script>'si"
     
  8. RolCom

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    Тогда надо еще учесть пробелы в закрывающем теге </script\s*>
     
  9. IntenT

    IntenT Создатель

    Регистр.:
    28 янв 2008
    Сообщения:
    40
    Симпатии:
    5
    Если есть перл - можно из шела запустить такой скрипт:
    perl -pi -w -e 's/<script[^>]+>(.+?)<\/script\s*>//msig;' *.htm

    Удалит все теги из файлов *.htm
    Если надо другой тип файлов, или все файлы - просто изменить соответственно маску
     
    zloba00 нравится это.
  10. zloba00

    zloba00

    Регистр.:
    28 окт 2008
    Сообщения:
    244
    Симпатии:
    34
    вот то что я искал, подсказали на nabble! :ay: <script>[^>]*</script> работает в editPlus на localhoste скорость обработки около 500 страниц в минуту, то что надо. :yahoo:
     
Статус темы:
Закрыта.