[help] Удаление строк которые начинаются с " ` ' ! ? ^ &

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

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

    blackspy

    Регистр.:
    11 мар 2007
    Сообщения:
    415
    Симпатии:
    141
    Надо удалить из файла те строки которые начинаются на определённые символы " ` ' ! ? и т.д желателен вариант где без особых примудростей я смогу самостоятельно расширить список этих символов.
     
  2. Ragger

    Ragger

    Регистр.:
    14 июн 2008
    Сообщения:
    167
    Симпатии:
    183
    Textpipe:
    Добавить в левое поле, к примеру "123".
    Удалить согласующиеся строки 123("|`|'|!|?|^|&)
    Найти 123 заменить на.
    Как-то так, хотя есть еще варианты.
     
  3. blackspy

    blackspy

    Регистр.:
    11 мар 2007
    Сообщения:
    415
    Симпатии:
    141
    Есть ещё варианты с текстпайпом или другие?
    Если другие то можно их озвучить?
     
  4. Ragger

    Ragger

    Регистр.:
    14 июн 2008
    Сообщения:
    167
    Симпатии:
    183
    Если найдешь кряк на 8 версию, можно еще поэкспериментировать, а то:

    А чем мой вариант не подходит? Разницы все равно не заметишь.
     
  5. fpinger

    fpinger

    Регистр.:
    11 май 2007
    Сообщения:
    253
    Симпатии:
    58
    Загоняешь стоп символы в массив.
    Потом читаешь построчно файл и пишешь в другой только строки в которых первый символ в строке не находится в массиве символов.
     
  6. elcaste

    elcaste

    Регистр.:
    30 ноя 2007
    Сообщения:
    322
    Симпатии:
    175
    PHP:
    <?php
    $in 
    file_get_contents('in.txt');
    $out preg_replace('/[!`\"]*[^\n]+\n/'""$in); 
    file_put_contents('out.txt'$out);
    ?>
    Можешь добавлять в символьный класс символы, по которым нужно удалить строки:

    $out = preg_replace('/[!`\"]+*[^\n]+\n/', "", $in);

    ЗЫ: работоспособность может зависеть от конца строки, ну, если что, надеюсь, регекспы не проблема :) В крайнем случае - обращайся.
     
    blackspy нравится это.
  7. RolCom

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    Регулярка выше удалить все от спецсимвола, до символа конца строки. Даже если он в середине строки.
    Правильно:
    PHP:
    <?php 
    $in 
    file_get_contents('in.txt'); 
    $out preg_replace('/^["`\'!?].*\r?\n?/m'""$in);  
    file_put_contents('out.txt'$out); 
    ?>
     
  8. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    737
    Симпатии:
    263
    Вот вариант без регекспов, новичку будет проще для понимания / усовершенствования:

    PHP:
    $stopchars = array('"','`','!');
    $in   fopen('infile.txt','r');
    $out fopen('outfile.txt','w');
    while( 
    $str fgets($in) )  {
       
    $firstchar $str[0]; 
       if (
    in_array($firstchar$stopchars)) {
           
    //  ничего не делаем
       
    } else {
           
    fwrite($out$str);
       }
    }
     
  9. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    312
    вместо
    PHP:
       if (in_array($firstchar$stopchars)) { 
           
    //  ничего не делаем 
       
    } else { 
           
    fwrite($out$str); 
       }
    лучше
    PHP:
       if (!in_array($firstchar$stopchars)) {
           
    fwrite($out$str); 
       }
    а так да, пример учень удобный
     
  10. vitaliyphp

    vitaliyphp Создатель

    Регистр.:
    22 фев 2009
    Сообщения:
    34
    Симпатии:
    2
    Советую обойтись без регулярных выражений, чтоб быстрее работало
     
Статус темы:
Закрыта.