Убрать пустые строки

Тема в разделе "PHP", создана пользователем kinho, 14 июн 2010.

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

    kinho

    Регистр.:
    22 мар 2008
    Сообщения:
    268
    Симпатии:
    103
    Доброго времени суток парни.
    Задача такая. Есть куча файлов php. Хитрым образом эти файлы пришли в негодность.. в них образовалось куча пустых строк. Скрипты стали растянуты до невозможности. Даже править неудобно!
    А при обработке выдаются ошибки типа: Cannot modify header information - headers already sent by и т.д.
    Подскажите, пожалуйста, кто сталкивался.. как это исправить?
     
  2. Yozik

    Yozik

    Регистр.:
    5 дек 2007
    Сообщения:
    239
    Симпатии:
    65
    Используй Nusphere PHPEd.
     
  3. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    пример скрипта скинь сюда, а то непонятно о чем речь вообще. ошибка "Cannot modify header information - headers already sent by" выводится когда до передачи хедеров в поток что то засунулось принтом или эхом, или ошибка самого пхп.
     
  4. jo0o00nyy

    jo0o00nyy Постоялец

    Регистр.:
    12 май 2010
    Сообщения:
    65
    Симпатии:
    27
    Вы случайно не с ФТП их брали? В скрипте кагбы добавилось по новой "строчке через строчку" (сори за сумбур)?
    Встречал такое, когда гоняли файлы с фтп на комп, и через редактор на сайте их отредачили. В винде перевод строки это 2 символа, в никсах и маках по 1му символу.
    Как варианты...
    Попробуйте написать скрипт, который продейтся по всем файлам и удалит лишние строки.
    В вашем редакторе попробуйте заменить через поиск (если он поддерживает нех-(аски-)кодировку) \r\n\r\n -> \r\n (0x0D 0x0A)
    Или ручками их, ручками :)
     
  5. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    Можно в phpDesigner попробовать функцию PHP Code Beautifier.
     
  6. rostisslav

    rostisslav

    Регистр.:
    27 мар 2007
    Сообщения:
    361
    Симпатии:
    136
    как я понемаю у тебя mysql база есть делаешь таблицу в ней ссылку на запись! а первый символ со строки можно получить (substr) читай команду!
    ===============================================================
    Если не понятно напиши более подробно И дай пример таблиц!
     
  7. zss

    zss Постоялец

    Регистр.:
    22 июн 2007
    Сообщения:
    55
    Симпатии:
    6
    С каждым файлом проделать такое действие:
    Код:
    $lines = file ('tttt.php');
    $result = fopen("tttt_res.php", "w");
    $n=count($lines);// к-во строк
    for($i=0;$i<$count;$i++)
        if($lines[$i]!="")
    	fwrite($result,$lines[$i];
    fclose($result);
    
     
  8. Kol0book

    Kol0book Постоялец

    Регистр.:
    17 июл 2009
    Сообщения:
    55
    Симпатии:
    5
    уберет пустые строки, будет легче редактировать скрипты
    PHP:
    $str=preg_replace("/\r\n\r\n/""",$str);
    ну а дальше сами, проверить на ошибки и тп
     
  9. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    350
    Проблема скорее всего в том что в начале скрипта стоят пустые строки тоесть
    -----------------
    !!! Пустая строка !!!
    <?php
    ......
    ?>
    -----------------
    Видемо файл инклудится а может и не 1 и потом выдаются заголовки а в потоке уже есть данные вот и эррорит интерпритатор...
    Попробуйте вот что.
    Во всех файлах удолить \r\n от начала файла и до <?
    Сейчас скриптик напишу для рекурсивного обхода и внесения данных изменений.
    Добавлено через 33 минуты
    PHP:
    <?php
      $dirname 
    '.'// Стартовая папка.
      
    $extentions = array('''.php'); // Расширения файлов в которых производить обработку.
      
    scan_dir($dirname); // Собственно запуск ))
    function scan_dir($dirname)
    {
        GLOBAL 
    $extentions$count;
        
    $dir opendir($dirname);
        while ((
    $file readdir($dir)) !== false)
        {
            if(
    $file != '.' && $file != '..')
            {
                if(
    is_file($dirname.'/'.$file))
                {
                    
    $ext strrchr($file'.');
                    if (
    array_search($ext$extentions))
                    {
                        
    // Чистит верхнии строки.
                        
    file_put_contents($dirname.'/'.$filepreg_replace('#^[\r|\n]*<\?#smU''<?'file_get_contents($dirname.'/'.$file)));
                        
    // Чистит внутреннии строки.
                        #file_put_contents($dirname.'/'.$file, preg_replace('#\r\n\r\n#', "\r\n", file_get_contents($dirname.'/'.$file)));
                    
    }
                }
                if(
    is_dir($dirname.'/'.$file))
                    
    scan_dir($dirname.'/'.$file);
            }
        }
        
    closedir($dir);
    }
    echo 
    'OK';
    ?>
    Закиньте скрипт в корень проекта и запустите как только он ответит вам ОК попробуйте ваш проект ерорит или нет.
    Если эрорит то можно ещё удалить лишнии \r\n в файлах и далее вручную искать проблему.
    Для того чтобы подчисстить повторяющиеся пустые строки в файлах распомментируйте 2 строку. (она там подписана) И запускайте столько раз сколько потребуется для придания читабельного вида.
    Я не стал делать удоление 2 строк а делал замену 2 строк на 1 дабы не произошла склейка...


    Скрипт работает сразу со всеми файлами обходя папки. Просто в корень капируйте и запускайте.
    Так же в скрипте можно указать файлы с каким разширением редактировать.
     
  10. peter911

    peter911 Создатель

    Регистр.:
    4 фев 2010
    Сообщения:
    16
    Симпатии:
    0
    PHP:
    $text str_replace("
    "
    ""$text);
    )))
     
Статус темы:
Закрыта.