Замена персонажа: Линии разрыва - PullRequest
0 голосов
/ 24 июня 2011

В моем приложении есть несколько областей, в которых есть теги

Один из моих пользователей заметил, что, если вы используете в сообщении разрыв строки (используя shift + enter), он сломает Javascript, когда попытается получить сообщение. Так как это проблема только при попытке прочитать сообщение, я смогу заменить его, когда сообщение отправлено в первую очередь.

Как я могу обнаружить разрыв строки и заменить его при отправке?

str_replace(???,"/n",$string)

Ответы [ 2 ]

2 голосов
/ 24 июня 2011

Как вы обнаружили, javascript не может обрабатывать разрыв строки в середине строки. Другими словами, следующий вывод вызовет ошибку js ...

<body onload="alert('te
st');">

Вы можете добавить обратную косую черту в конце ломаной, чтобы исправить эту ошибку ...

<body onload="alert('te \
st');">

Как сказал пользователь 765476, вы можете использовать PHP-функцию nl2br для текста. Но добавим, что лучше всего делать это только тогда, когда вы на самом деле создаете вывод html. Одна из причин в том, что если вы когда-нибудь позволите пользователям редактировать текст, который они уже отправили, они увидят <br> везде в текстовом поле, и вам придется разработать еще один скрипт для замены этих <br>.

Если вы действительно хотите запретить пользователям отправлять разрывы строк (и любые возможные возвраты каретки), тогда используйте что-то вроде этого базового кода PHP, чтобы заменить их одним пробелом ...

str_replace(array("\r\n", "\r", "\n"), ' ', $message);

Примечание: важен порядок строк поиска. Первый проход заменяет все "\r\n", второй проход заменяет любые оставшиеся "\r", третий проход заменяет любые оставшиеся "\n" ( Редактировать: Я забыл "\r" распознается в IE javascript , только не в некоторых других браузерах).

0 голосов
/ 24 июня 2011

Может быть эта функция это то, что вы ищете?Преобразует переводы строк в теги <br/>.

...