Удалить повторяющиеся переносы строк.

dimases

Новичок
Удалить повторяющиеся переносы строк.

Нужно из строки удалить все "\n", которых больше 2. Делаю так:
<?
$send[txt]='Test!

Test!Test!Test!Test!







Test!Test!Test!Test!Test!Test!';

echo preg_replace('/\\n{2,}/',"\n",$send[txt]);
?>

по аналогии с этим постом:
http://phpclub.ru/talk/showthread.php?postid=508446#post508446

но не работает. Странно, мож кто знает как?
 

440hz

php.ru
dimases
gw(root):/usr/home/440hz#>cat test3.php
<?
$send='Test!

Test!Test!Test!Test!







Test!Test!Test!Test!Test!Test!';

echo preg_replace('/\\n{2,}/',"\n",$send);
?>
gw(root):/usr/home/440hz#>php test3.php
Test!
Test!Test!Test!Test!
Test!Test!Test!Test!Test!Test!
 

dimases

Новичок
440hz
Хочешь сказать, что работает? А почему тогда в броузер выдается необработано?
Пример: http://agaltsov.ru/test.php (Unix)

Не знаю, у меня на виндах оно так:

Z:\usr\local\php>php.exe Z:\home\onefoto\www\test.php
Content-type: text/html
X-Powered-By: PHP/4.4.0

Test!

Test!Test!Test!Test!







Test!Test!Test!Test!Test!Test!

-~{}~ 12.01.06 19:37:

white phoenix
Так?
echo preg_replace('/\\r{2,}/',"\n",$send);

Без изменений =(
 

white phoenix

Новичок
440hz
Что-то не увидел потугов обработать \r.
dimases
PHP:
$result = preg_replace('~(?:\r?\n){2,}~',"\n",$string);
 

440hz

php.ru
white phoenix
еще разик глянь? 8) я сам допер только после твоего поста
 

white phoenix

Новичок
440hz
:) '/[\r\n]+/' не совсем то что нужно т.к. порядок упускается.
dimases
\r это символ возврата коретки, особенность win-платформ.
 

440hz

php.ru
white phoenix
оно таки да ... учтем на будущее.
а ежели вот так: \r\r\r\n\n\n\r\r\r 8)
 

SelenIT

IT-лунатик :)
Для полноты: afaik, на старых Макинтошах переводом строки служил один \r (без \n).
 

white phoenix

Новичок
Интересно, а почему нельзя было сразу везде использовать \n? Ведь это такой же символ как и все остальные...
 

kruglov

Новичок
\n - перевод строки (newline).
\r - возврат каретки (return).

Видать, предполагалось, что может захотеться возвратить каретку в начало строки, не переходя на новую строку, и наоборот.

Применение принципов печатной машинки.

И я видел, как на некоторых терминалах \n просто переводил курсор на одну позицию вниз, не перенося его в начало строки.
 

white phoenix

Новичок
kruglov
Это я знаю, но \r мне кажется ненужным, мы ведь не на печатной машинке печатаем :)
 

kruglov

Новичок
Многое нам кажется ненужным, например кнопка Scroll-Lock. Но производители клавиатур ее продолжают пихать. Обратная совместимость, чтоб ее...

-~{}~ 13.01.06 01:15:

p.s. Хотя, ScrollLock все-таки изредка используется. Исследователи могут узнать, как именно, на примере Экселя.
 

440hz

php.ru
Автор оригинала: white phoenix
Интересно, а почему нельзя было сразу везде использовать \n? Ведь это такой же символ как и все остальные...
1. раньше были принтеры (устройства печати) которые позволяли не только делать NL, но и делать BL (BackLine), т.е. переходить на строчку выше.
2. чуток попозже были матричные принтеры, которые как раз и ипользовали CR. например для выделения текста жирным он прогонялся 3 раза. сам писал когда-то для таких монстров драйверы. например EPSON-FX80, кто помнит ...

эх, ностальгия, мля ... EC-1033, БЭСМ, Cyber и т.д. ... и вместо терминала консоль на подобе пишущей машинки ... а контакты спритом протирали. 8) по вечерам ...
 
Сверху