$ php ./t1.php
*Hello
World*
Проблема с nl2br и maxlength
Итак. Когда юзер отправляет данные, они обрабатываются функцией nl2br(); чтобы все его самостоятельные "enterы" переходили на новую строку. А также стоит ограничение в X символов. Проблема в том, что можно просто добавить текст, который будет вводится одними entарами (т.е. переходы на новую строку). т.к. один переход считается за один символ, то можно отправить очень длинный вниз текст без ничего. Как бы этого избежать? Например что бы один переход считался не за один символ, а за 128 допустим.
лллллл
Может лучше заменить переводы строк в количестве больше 2-х, на два перевода строки? (чтоб была возможность использования пустых строк)
Цитата: Romik
Может лучше заменить переводы строк в количестве больше 2-х, на два перевода строки? (чтоб была возможность использования пустых строк)
не подскажите как это сделать?
preg_replace(???,???,$text);
Код:
preg_replace("/([\n]{3,})/m","\n\n",$text);
что-то не робит $message = preg_replace("/([\n]{3,})/m","\n\n",$message);
Подозреваю в $message у вас текст уже с <br>, потому и не работает.
Цитата: Romik
Подозреваю в $message у вас текст уже с <br>, потому и не работает.
Вроде попробовал во всех местах и до nl2br и после, и при вводе и после ввода. Что-то не робит. Кто знает.
Код:
<?
$v="Hello
World";
$b=preg_replace("/([\n]{6,})/m","\n\n",$v);
echo "*$b*";
$v="Hello
World";
$b=preg_replace("/([\n]{6,})/m","\n\n",$v);
echo "*$b*";
Код:
а вот работающий вариант:
Код:
<?
$v="Hello
World";
$b=preg_replace("/([\n]{3,})/m","\n\n",$v);
echo "*$b*";
$v="Hello
World";
$b=preg_replace("/([\n]{3,})/m","\n\n",$v);
echo "*$b*";
Код:
$ php ./t1.php
*Hello
World*
*Hello
World*
Вопросы?
Цитата:
$tablerows[2]=preg_replace("/([\n]{3,})/m","\n\n",$tablerows[2]);
$tablerows[2] = nl2br($tablerows[2]);
$tablerows[2] = nl2br($tablerows[2]);
вот мой код
где $tablerows[2] берется из базы
Смотрите свои данные
Применять nl2br не перед вставкой в базу, а перед показом текста. В базе будет храниться с символами перевода строки.
Цитата:
аваывавыа <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br>выфвыа
перед <br> стоит пробел.
Вот как допустим это текст изменить на:
Цитата:
аваывавыа <br> <br>выфвыа
Перебрал уже много этих регулярных выражений, так и не получилось. Прошу помочь.
Цитата:
аваывавыа<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> выфвыа
или вот если парсить nl2br
ФАК ЕААА!! нашел ошибку. Глупо вообще. Я заменял \n, забыв про пробел. надо было заменять \r\n, т.е. preg_replace("/([\r\n]{3,})/m","\n\n",$text);