Экранировать перевод строки

korpus

злой бобёр
Экранировать перевод строки

На сайте есть текстовое поле <input type="text" name="something" value="" />
В неё я записываю следующий текст: "текст\r\nтекст" и нажимаю клавишу Submit
Когда я вывожу эту строку в браузер, то просмотрев исходный код страницы вижу, что она превратилась в перевод строки. Этого можно было бы избежать, предварительно обработав строку функцией addslashes(), но она ставит дополнительный косые черты перед ожиночными и двойными кавычками, которые трогать пока ни к чему, т.к. в БД строку я добавлять не собираюсь.
Что с этим можно поделать?
 

korpus

злой бобёр
Автор оригинала: Yuriy_S
задача то какова? что ты хочешь в итоге получить?
Я не хочу экранировать кавычки (текст не будет добавляться в БД), а только переводы строк типа \r. Здесь для пользователя сайта я хочу сделать модель WYSIWYG - что он вводит в строку, то он и должен получить в конечном итоге.
Вообще в php ещё есть "\0". Очень непонятно, как поступать в таких случаях, с этими специальными символами...
 

dimagolov

Новичок
Когда я вывожу эту строку в браузер
вот и смотри как ты ее выводишь. где-то у тебя не экранируются слеши там, где должны были быть.

hint: экранировать/кодировать данные нужно ТОЛЬКО там, где это необходимо и ТОЛЬКО так, как именно это необходимо.
 

korpus

злой бобёр
Автор оригинала: dimagolov
вот и смотри как ты ее выводишь. где-то у тебя не экранируются слеши там, где должны были быть.

hint: экранировать/кодировать данные нужно ТОЛЬКО там, где это необходимо и ТОЛЬКО так, как именно это необходимо.
Ничего не понял.

Делаю так:
Код:
echo $_REQUEST['something'];
Если хочу экранировать, то делаю так:
Код:
echo addslashes($_REQUEST['something']);
Дело в том, что addslashes() в основном применяется для вставки данных в БД и экранирует заодно кавычки. Мне то не надо, так как я строку просто хочу вывести в браузер. Как быть в моём случае мне непонятною
 

korpus

злой бобёр
А если я строку сначала обработаю addslahes(), а потом захочу вывести в браузер и обработаю её htmlspecialchars(), то это правильно будет? Косые чёрточки не выведутся в браузер?
 

dimagolov

Новичок
Код:
echo $_REQUEST['something'];
ты вообще-то выводишь HTML. этот код HTML не выводит.
 

korpus

злой бобёр
Автор оригинала: dimagolov
Код:
echo $_REQUEST['something'];
ты вообще-то выводишь HTML. этот код HTML не выводит.
Вы о чём-то другом.
Какая последовательность операций необходима, чтобы в браузер вывести точно такую же строку, как её ввёл пользователь? Универсальный метод, так сказать, чтобы можно было применять к любым строкам, получаемым из $_REQUEST. Было бы неплохо один раз разработать эту последовательность операций, чтобы потом применять её в своих проектах.
Сейчас я точно не знаю, как это сделать.
 

Вурдалак

Продвинутый новичок
Сначала разберись почему строка "\r\n" («бекслеш-эр-бекслеш-эн») преобразуется в перевод строки.
 

korpus

злой бобёр
Автор оригинала: Вурдалак
Сначала разберись почему строка "\r\n" («бекслеш-эр-бекслеш-эн») преобразуется в перевод строки.
не знаю я этого. Может Magic_quotes отключены... Может внутренняя архитектура php при работе с данными из браузера...
 

Вурдалак

Продвинутый новичок
korpus, эта замена по-любому происходит в твоём скрипте. Я даже предположу, что там криво сделан откат насильственных действий магических кавычек.
 
Сверху