Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2013, 20:17   #1
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию привод файла в нужный вид (перенос строк) php

Добрый день!
Ситуация:
Есть файл comments.txt, в нем очень много записей (1 запись - 1 строка). Но дело в том, что некоторые строки перенесены неправильно.
Поясню примером.

Содержание файла:
1 строка: ехал
2 строка: грека
3 строка: "через
4 строка: реку
5 строка: видит"
6 строка: грека
7 строка: в реке
8 строка: рак
...

Нужно получить из него вот такое содержание:
1 строка: ехал
2 строка: грека
3 строка: через реку видит
4 строка: грека
5 строка: в реке
6 строка: рак
...

Как видите, строки перенесены неправильно в исходном файле. Но неправильные строки заключены в ковычки. Порядок строк должен стать как в примере.

Пытаюсь сделать так (см. комментарии):
PHP код:
<?php
$fileComments 
fopen("comments.txt""r");
$newFileComments fopen("newcomments.txt""r+");
$comment = array(); $newcomment = array(); $numbers = array(); //ненужные строки
while (($buffer fgets($fileComments)) !== false) {$buffer str_replace(PHP_EOL,'',$buffer); array_push($comment$buffer); }

for (
$i=0$i<count($comment); $i++) {
    if (
substr($comment[$i], 01) == '"') {
        
$number1 $i;
        
$flag true;
        for (
$j=1$j<20$j++) {
            if (
$flag) {
                
$str $comment[$i+$j];
                for (
$k=0$k<=strlen($str); $k++) {
                    if (
$str[$k] == '"') {
                        
$number2 $i+$j
                        
$flag false;
                        break;
                    }
                }
            }
        }
        
$newstr '';
        for (
$j=$number1$j<=$number2$j++) {
            
$newstr .= $comment[$j];
            
array_push($numbers$j);
        }
        
$newstr str_replace('"','',$newstr);
        
array_push($newcomment$newstr);
         
//$i = $number2; //скрипт просто зависает... (вариант 1)
    
}
    else {
        
$flag true;
        
//for ($j=0; $j<count($numbers); $j++) { //в этом цикле скрипт просто зависает... (вариант 2)
        //    if ($i == $numbers[$j]) {$flag = false; break;}
        //}
        
if ($flagarray_push($newcomment$comment[$i]);
    }
}

for (
$i=0$i<count($newcomment); $i++) {
    echo 
iconv("utf-8""windows-1251"$newcomment[$i]).'<br>';
}
?>
В комментариях 2 варианта. Но не один не работает. Не знаю даже что сделать. Помогите.

П.С. Может быть у меня подход неправильный.
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"
bpystep вне форума Ответить с цитированием
Старый 23.03.2013, 21:32   #2
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию

Проблему решил.
Просто в файле может быть, больше чем 20 строк "одной строки"
Направильно:
Код:
 for ($j=1; $j<20; $j++)
Правильно:
Код:
for ($j=1; $j<100; $j++) // ну либо другая какая-то цифра
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"
bpystep вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Восстановить прежний вид программы с .ini файла??? JunioR_BK Общие вопросы Delphi 3 22.07.2012 06:26
C#: Перенос строк с одного файла в другой barhat Помощь студентам 15 07.02.2012 07:33
перенос строк удаление ненужных строк HelperAwM Microsoft Office Excel 5 26.06.2010 18:42
Перенос строк Olper Microsoft Office Excel 2 21.06.2010 14:43
Перенос строк Yuran Общие вопросы Delphi 5 15.07.2008 23:11