Php nl2br не работает
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006
Откуда: Israel
Секрет
Теперь, когда вы уже наверняка второпях отправили свой запрос,
я расскажу вам простой секрет, который сэкономит вам уйму ожиданий,
даже если первый ответ по теме последуем сразу же.
Само собой я знаю что ответят мне тут же, и если я посмотрю
на сообщения на форуме, то пойму что в общем то я и не ошибаюсь.
Но еще я точно замечу, что очень мало тем, в которых всего два ответа :
вопрос автора и еще два сообщение вида Ответ + Спасибо
После этого приходится начинать уточнять этим неграмотным что мне надо.
Они что, сами читать не умеют? А уточнять приходится.
И иногда пока они переварят то что я им скажу проходит и не одна ночь..
Уверен что если бы я им сказал что у меня есть
фиолетовый квадрат, и нужно превратить его в синий треугольник
и я пытался взять кисточку, макнуть в банку и поводить ей по квадрату
но почему то кисточка не принимала цвет краски в банке,
то на мой вопрос — где взять правильные банки мне бы ответили гораздо быстрее
предложив её открыть, а не тратить еще стольник на жестянку.
Поэтому с тех пор я строю свои вопросы по проверенной давным давно схеме:
Что есть
Что нужно получить
Как я пытался
Почему или что у меня не получилось.
На последок как оно происходит на форумах
Новичок: Подскажите пожалуста самый крепкий сорт дерева! Весь инет перерыл, поиском пользовался!
Старожил: Объясни, зачем тебе понадобилось дерево? Сейчас оно в строительстве практически не используется.
Новичок: Я небоскрёб собираюсь строить. Хочу узнать, из какого дерева делать перекрытия между этажами!
Старожил: Какое дерево? Ты вообще соображаешь, что говоришь?
Новичок: Чем мне нравиться этот форум — из двух ответов ниодного конкретного. Одни вопросы неподелу!
Старожил: Не нравится — тебя здесь никто не держит. Но если ты не соображаешь, что из дерева небоскрёбы не строят, то лучше бы тебе сначала школу закончить.
Новичок: Не знаите — лучше молчите! У меня дедушка в деревянном доме живёт! У НЕГО НИЧЕГО НЕ ЛОМАЕТСЯ.
Но у него дом из сосны, а я понимаю, что для небоскрёба нужно дерево прочнее! Поэтому и спрашиваю. А от вас нормального ответа недождёшся.
Прохожий: Самое крепкое дерево — дуб. Вот тебе технология вымачивания дуба в солёной воде, она придаёт дубу особую прочность:
Новичок: Спасибо, братан! То что нужно.
Отредактировано модератором: Uchkuma, 26 Апреля, 2011 — 10:21:12
Источник
PHP nl2br не работает (ни альтернативы)
Я работаю над контактной формой. Контактное сообщение может иметь разрывы строк. Они должны быть преобразованы в
. Ничего не работает. Вот мой тестовый код:
Результат в email (повторяется несколько раз из-за тестов):
Который разделен регулярными разрывами строк (не
), если я посмотрю на исходный код.
Почему PHP делает это со мной? Этот вопрос, кажется, задают много, но решения, которые я могу найти. не имеют никакого значения what-so-ever.
Как я могу преобразовать разрывы строк в html разрывов?
3 ответа
Я заметил, что один из моих сценариев больше не работает, и начал расследование. В конце концов все свелось к тому, что nl2br() больше не работает. Проверьте, какие результаты я получаю от тестового сценария: nl2br(asd,true): NULL nl2br(asd,false): NULL nl2br(asd): string(3) asd Если указан второй.
Этот: var_dump(nl2br(aaa\naaa, false)); Выходы: NULL Я использую PHP версию 5.2.13. Doctype is:
Быстрый ответ: используйте nl2br().
Другими словами, это работает на меня. Я добавил в ваш код префикс с:
В Thunderbird, по крайней мере, я вижу текст email с правильным межстрочным интервалом (для nl2br()). Когда я просматриваю как HTML, я также вижу правильный интервал и красный текст вверху и внизу.
Возможно, вы используете клиент email, который не понимает
и хочет видеть
. указывающий явный doctype, может помочь (но быстрый Google предполагает, что это не поможет).
Совет по отладке: когда все, что должно работать, не работает, проверьте, работает ли это вручную. I.e. включите тест с использованием блока static HTML, который использует
(и
), и посмотрите, работает ли он. Если это не так, вы знаете, что «which php function do I use»-неправильный вопрос.
Использование двойной обратной косой черты в функции str_replace сработало для меня.
http://php.net/manual/en/language.types.string.php Чтобы указать литеральную одинарную кавычку, экранируйте ее обратной косой чертой (). Чтобы указать литеральную обратную косую черту, удвоьте ее (\). Все остальные экземпляры обратной косой черты будут рассматриваться как литеральная обратная косая черта: это означает, что другие escape-последовательности, к которым вы могли бы привыкнуть, такие как \r или \n,, будут выводиться буквально, как указано, а не иметь какого-либо специального значения.
Зачем так усложнять, когда все может быть так просто?
Очевидно, вам понадобятся заголовки, и, вероятно, у вас будет больше полей, но это ваш textarea.
Похожие вопросы:
Например, у меня есть: Lorem Ipsum Dolor Sir Amet Как содержание $s . Теперь, если я напечатаю результат htmlspecialchars(nl2br($s)) , это: Lorem Ipsum
Dolor Sir Amet В то.
Я занимался рефакторингом своего небольшого веб-приложения. вся ночь. Сегодня, когда я начал тестирование, первой ошибкой, которую я обнаружил, была проблема с функцией system PHP nl2br() . На моем.
Я собираю краткую информацию о событии ical в PHP году. Дело в том, что сводка содержит разрывы строк \n , и я хочу заменить их на
при вставке событий. В моем PHPMyAdmin после выхода из.
Я заметил, что один из моих сценариев больше не работает, и начал расследование. В конце концов все свелось к тому, что nl2br() больше не работает. Проверьте, какие результаты я получаю от тестового.
Этот: var_dump(nl2br(aaa\naaa, false)); Выходы: NULL Я использую PHP версию 5.2.13. Doctype is:
Я не могу заставить функцию nl2br работать после извлечения данных из моей базы данных: $result = mysql_query(SELECT comments..etc.etc..); while ($row = mysql_fetch_array($result)) < echo.
Кто-нибудь, пожалуйста, помогите мне с этим почтовым скриптом. Я просто пытаюсь отправить html email, и часть сообщения от пользователя textarea, который вставляет \r\n. Кажется, я не могу.
Я пытаюсь создать разрывы строк в своем скрипте php. У меня есть переменные, использующие сеанс, и я не могу понять, как создавать разрывы строк с их помощью. Я пробовал следующее (а также различные.
Я пытаюсь отформатировать $c (в основном это блоки информации, которые мне нужно отобразить в виде абзаца). Я использую nl2br() для введения разрывов строк. Итак, у меня есть следующий код.
Поэтому я пытаюсь заставить свой nl2br работать, но он просто не работает так, как я надеюсь. Когда он извлекает текст из базы данных, я хочу, чтобы он распознал \n с nl2br у меня есть.
Источник
nl2br
(PHP 4, PHP 5, PHP 7, PHP 8)
nl2br — Вставляет HTML-код разрыва строки перед каждым переводом строки
Описание
Возвращает строку string , в которой перед каждым переводом строки ( \r\n , \n\r , \n и \r ) вставлен
или
.
Список параметров
Использовать ли совместимые с XHTML переводы строк или нет.
Возвращаемые значения
Возвращает изменённую строку.
Примеры
Пример #1 Пример использования nl2br()
Результат выполнения данного примера:
Пример #2 Генерирование корректной HTML-вёрстки с помощью параметра use_xhtml
Результат выполнения данного примера:
Пример #3 Различные разделители строк
Результат выполнения данного примера:
Смотрите также
- htmlspecialchars() — Преобразует специальные символы в HTML-сущности
- htmlentities() — Преобразует все возможные символы в соответствующие HTML-сущности
- wordwrap() — Переносит строку по указанному количеству символов
- str_replace() — Заменяет все вхождения строки поиска на строку замены
User Contributed Notes 16 notes
It’s important to remember that this function does NOT replace newlines with
tags. Rather, it inserts a
tag before each newline, but it still preserves the newlines themselves! This caused problems for me regarding a function I was writing — I forgot the newlines were still being preserved.
If you don’t want newlines, do:
to replace all linebreaks to
the best solution (IMO) is:
function nl2br2 ( $string ) <
$string = str_replace (array( «\r\n» , «\r» , «\n» ), «
» , $string );
return $string ;
>
?>
because each OS have different ASCII chars for linebreak:
windows = \r\n
unix = \n
mac = \r
works perfect for me
Here’s a more simple one:
/**
* Convert BR tags to nl
*
* @param string The string to convert
* @return string The converted string
*/
function br2nl ( $string )
<
return preg_replace ( ‘/\
/i’ , «\n» , $string );
>
?>
Enjoy
Starting from PHP 4.3.10 and PHP 5.0.2, this should be the most correct way to replace
and
tags with newlines and carriage returns.
/**
* Convert BR tags to newlines and carriage returns.
*
* @param string The string to convert
* @return string The converted string
*/
function br2nl ( $string )
<
return preg_replace ( ‘/\
/i’ , PHP_EOL , $string );
>
?>
(Please note this is a minor edit of this function: http://php.net/nl2br#86678 )
You might also want to be «platform specific», and therefore this function might be of some help:
/**
* Convert BR tags to newlines and carriage returns.
*
* @param string The string to convert
* @param string The string to use as line separator
* @return string The converted string
*/
function br2nl ( $string , $separator = PHP_EOL )
<
$separator = in_array ( $separator , array( «\n» , «\r» , «\r\n» , «\n\r» , chr ( 30 ), chr ( 155 ), PHP_EOL )) ? $separator : PHP_EOL ; // Checks if provided $separator is valid.
return preg_replace ( ‘/\
/i’ , $separator , $string );
>
?>
Источник
nl2br not working for me
I can’t get nl2br function to work after fetching data from my database:
In database row comments :
OUTPUT:
If I simply test this out like so it works fine:
OUTPUT:
12 Answers 12
I know this is an old post but if like me you are have stumbled across this issue and the above didn’t work for you, this solution may help you instead:
or (they are not the same function, note the additional «c» after strip)
Most likely you are doing escaping twice, when adding your data into DB.
Check your code that adds data to DB and remove unnecessary escaping.
Most likely it’s some senseless «universal sanitization» function.
Well it’s easy.
Let’s take a quote, not a newline to demonstrate. The behavior the same. Slashes being stripped then data goes to database.
Thus, in the normal case:
source: It’s
after escaping: It\’s
by the query execution slash being stripped and
both in the database and back It’s
in double escaping case:
source: It’s
after escaping: It\’s
after second escaping: It\\\’s
by the query execution slash being stripped and
both in the database and back It\’s
we have our data spoiled.
Just make yourself understand that escaping i not something magical that makes your data «safe» (and, therefore can be done many times, as you probably think). It’s just adding a backslash to certain symbols.
Источник
Как устранить лишние при использовании функции nl2br?
Здравствуйте, уважаемые программисты!
Столкнулся с одной очень неприятной вещью — когда использую nl2br и если в тексте присутствуют еще определенные теги например,
- Вопрос задан более трёх лет назад
- 246 просмотров
Хорошо, объясню так сказать с примерами. Вот так я ввожу текст с тегами в БД, вроде ничего необычного, экстраординарного и странного:
При выводе текст из БД на страницу с применением функции PHP nl2br получается такая хурма.
С остальными постоянно применяемыми тегами функция работает хорошо, без подобного выпендрежа.
Мануалы все прочитаны и не раз уже. Много найдено чего в инете, и ничего не помогло. И с preg_replace() в разных вариациях я уже развлекался, результат тот же.
P.S. Есть вариант сделать вот так:
Но это уже какие-то некрасивые убогие костыли.
Источник