segazav
18.05.2015 - 23:25
Подскажите, как убрать любые лишние переносы строк?
Чтобы оставалось не более 2-х переносов.
Так?
preg_replace('!\n\n!', '', $text);
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Игорь_Vasinsky
18.05.2015 - 23:48
Медведь
\n *nix
\r\n windows
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
preg_replace('!\s\s!', '', $text);
Так должно и на винде и на никсах работать. Попробуй.
Кстати \n на винде тоже работает.
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
killer8080
19.05.2015 - 00:00
Цитата (Arh @ 18.05.2015 - 22:50) |
preg_replace('!\s\s!', '', $text);
Так должно и на винде и на никсах работать. Попробуй.
Кстати \n на винде тоже работает. |
\s это любой пробельный символ, а не только перевод строки.
killer8080
Тогда не то)
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
volter9
19.05.2015 - 00:09
segazav$text = preg_replace('/\n{2,}/', "\n\n", $text);
_____________
Мой блог
killer8080
19.05.2015 - 00:11
как вариант
preg_replace("#(\r\n|\r|\n){3,}#", "\r\n\r\n", $text);
segazav
19.05.2015 - 00:23
Цитата (killer8080 @ 18.05.2015 - 20:11) |
как вариант preg_replace("#(\r\n|\r|\n){3,}#", "\r\n\r\n", $text); |
Результат вашего кода:
Если один перенос строки - оставляет один.
Если больше одного - убирает вообще все переносы, заменяя их на rnrn
Даже stripslashes() не помогает.
Чтобы переносы были 'ровными': - удалить все переносы, просто заменить ("\r\n" на "")
str_replace - затем поставить нужные 2 переноса:
- - Считаем количество символов в строке
strlen - - Делим на 3, сразу округляем в большую сторону
ceil - - Ставим в нужное место переносы, два раза
wordwrapПосле strlen -
if($kol_simbolov>=3)
_____________
Принимаю заказы, писать в ЛС
segazav
19.05.2015 - 00:37
Цитата (volter9 @ 18.05.2015 - 20:09) |
segazav
$text = preg_replace('/\n{2,}/', "\n\n", $text); |
Этот пример вообще не работает!
segazav
19.05.2015 - 00:44
Цитата (killer8080 @ 18.05.2015 - 20:11) |
как вариант
preg_replace("#(\r\n|\r|\n){3,}#", "\r\n\r\n", $text); |
Поменял двойные кавычки на одинарные и все нормально заработало!?
preg_replace('#(\r\n|\r|\n){3,}#', "\r\n\r\n", $text);
Почему так???
segazav
19.05.2015 - 01:03
Цитата (Медведь @ 18.05.2015 - 20:59) |
Мой вариант тоже интересный, если интересует равномерность переносов.
Все ссылки на мануал имеются. |
Ваш вариант интересный, просто этот как то короче и проще)
Спасибо всем за помощь
Проще некуда ))
$text = "строка";
$text_2 = str_replace("\r\n", "", $text);
$kol_simbolov = strlen($text_2);
if($kol_simbolov>=3)
{
$perenos_stroki = ceil($kol_simbolov/3);
$result = wordwrap($text_2, $perenos_stroki, "\r\n");
}
else
{
$result = wordwrap($text_2, 1, "\r\n");
}
_____________
Принимаю заказы, писать в ЛС