Удалить пустые строки и повторы php

12
awmaster08
На сайте с 22.02.2008
Offline
155
5295

Здравствуйте! Написал небольшой парсер, проблема в том, что данные сохраняются в файл следующем виде:

текст

текст

текст

текст

текст

текст

текст

текст

Т.е. остаются пустые строки. Запись в файл циклом выглядит так:

$text = $names[1][$x]."
";

с помощью /r/n перевод строки не получается сделать (думаю, из-за хостинга).

Вопрос: как удалить пустые строки и повторы на php? Может как-то все красиво обработать и перезаписать в новый файл? :rolleyes:

skAmZ
На сайте с 04.09.2009
Offline
122
#1
awmaster08:
с помощью /r/n перевод строки не получается сделать (думаю, из-за хостинга).

Скорее всего из-за того что пишите их '\r\n', а не "\r\n"...или как в вашем случае слеш не в ту сторону

$text[] = $names[1][$x];

.....

$text=array_unique(array_filter(array_map('trim', $text)));

$result=implode("\r\n", $text);

mfl
На сайте с 16.10.2006
Offline
134
mfl
#2

после того как текст составлен, перед записью в файл:

$text = preg_replace('~\s\s+~', "\r\n", $text);

skAmZ
На сайте с 04.09.2009
Offline
122
#3

mfl, в а чем прикол плодить "пустые строки", если надо совсем другое?)

awmaster08:
Вопрос: как удалить пустые строки и повторы на php?

P.S. а советом про '\r\n' и "\r\n" смотрю воспользовались ;)

awmaster08
На сайте с 22.02.2008
Offline
155
#4
skAmZ:
mfl, в а чем прикол плодить "пустые строки", если надо совсем другое?)


P.S. а советом про '\r\n' и "\r\n" смотрю воспользовались ;)

Да, после сохранения файла остается только "n" и ничего не работает.🙅

skAmZ
На сайте с 04.09.2009
Offline
122
#5

awmaster08, не совсем понятно к чему вы это))

Вы заметили у меня в коде строку $result=implode("\r\n", $text);?

Чтоб вас не смущать стоит записать $text=implode("\r\n", $text);

awmaster08:
Да, после сохранения файла остается только "n"

Не получится приведите точный ваш код)

t0os
На сайте с 25.02.2008
Offline
64
#6

Должно получится что-то примерно такое:


<?php

if (strlen(trim($names[1][$x]))
{
$text = trim($names[1][$x]).PHP_EOL;

// запись в файл...
}

?>
awmaster08
На сайте с 22.02.2008
Offline
155
#7

Пока ничего не помогло. Я думаю в конце скрипта надо файл снова открыть и его обработать.

$x = 1;


while ($x <=200) {

$names[1][$x] = str_replace("?names=", "", $names[1][$x]);

$h = fopen("names.txt","a+");
$text = $names[1][$x]."
";
fwrite($h,$text);
fclose($h);
echo $names[1][$x];
$x++;
}

Как сделать, ребят?

AlikZP
На сайте с 22.11.2009
Offline
107
#8

Я так понял это есть часть парсера?

Если строки

$h = fopen("names.txt","a+"); 

$text = $names[1][$x]."
";
fwrite($h,$text);
fclose($h);

проверять? Например так:

if (trim($names[1][$x]) != '') {

file_put_contents("names.txt", $names[1][$x]."\r\n", FILE_APPEND);
}

И код я чуток сократил...

Website CMS: быстрая, удобная, недорогая! Вечная лицензия за 45$ (/ru/forum/524503) Яся - быстрый поиск фото для товаров. OpenCart/ocStore. Дополнение. (/ru/forum/665287) Грамотная верстка ваших макетов (/ru/forum/comment/8853216)
awmaster08
На сайте с 22.02.2008
Offline
155
#9

После сохранения этого кода, получаем в скрипте

if (trim($names[1][$x]) != '') {

file_put_contents("names.txt", $names[1][$x]."rn", FILE_APPEND);
}

т.е. слэши пропали? Это нормально? Может поэтому не работает такой способ?

AlikZP
На сайте с 22.11.2009
Offline
107
#10
awmaster08:
После сохранения этого кода, получаем в скрипте
if (trim($names[1][$x]) != '') {

file_put_contents("names.txt", $names[1][$x]."rn", FILE_APPEND);
}

т.е. слэши пропали? Это нормально? Может поэтому не работает такой способ?

Простите, слешы у r n ? Я в своем сообщении их вижу. Странно, почему их не увидели Вы. Естественно они должны присутствовать.

Должно быть

file_put_contents("names.txt", $names[1][$x]."\r\n", FILE_APPEND);

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий