2013-10-02 1 views
2

У меня есть текстовое поле в моей форме, которое просит пользователя ввести его/ее информацию. Я хочу, чтобы при отправке формы введенные данные заменяли все разрывы строк тегом <br />, поэтому, когда эти данные хранятся в базе данных и отображаются позже, форматирование верное.Заменить разрыв строки с тегом <br /> перед отправкой формы?

<form action="index.php" method="post" name="add" enctype="multipart/form-data"> 

<p id="bio" style="display:none;"><label class="left">Bio</label><textarea name="bio"  rows="10" cols="50" class="contact"></textarea></p> 

<p class="submit" style="text-align:center;"><input type="submit" name="add" value="Submit" /></p> 

</form> 

Я знаю, что мне нужно использовать str_replace, но я просто не знаю, где его использовать. Я думаю, что я запутался в том, когда введенная информация будет отформатирована.

+5

Применение форматирования на клиенте - плохая идея. Хранение форматированных данных (вместо необработанных данных) в базе данных является плохой идеей (за исключением кеша). Разрешить HTML в адресе является плохой идеей (это делает вас уязвимыми для XSS-атак, если вы не используете относительно дорогостоящую фильтрацию (по сравнению с просто избеганием текста)). Добавьте элементы '
', когда вы вставляете адрес в HTML и делаете это с кодом сервера. – Quentin

+0

Эта форма находится на стороне администратора и эта веб-страница является безопасной и может быть доступна только людям, у которых есть разрешения. Я просто хочу, чтобы любые разрывы строк были заменены на теги
. [ЭТО] (http://stackoverflow.com/questions/2813071/remove-line-breaks-and-add-br-tags-in-php) - это то, что я хочу, но я просто не знаю, когда и как применять Это. – user2441391

+0

Вы не просто доверяете людям, чтобы не быть злыми, вы также доверяете им не ошибаться. Сделайте это на стороне сервера. Это то место, где вы (или, по крайней мере, должны) делать все свое преобразование в HTML уже, так что делайте это в одном месте. – Quentin

ответ

10

Вы не должны изменять данные при его сохранении (помимо экранирования нежелательных символов и преобразований даты в желаемый формат (UTC или еще)). Вместо этого измените его при его отображении.

Итак, сохраните его в базе данных с помощью \n s (позволяя легко редактировать его позже), и при отображении данных просто используйте nl2br() вокруг переменной, удерживая текст из базы данных.

В противном случае - при редактировании - вам нужно будет преобразовать <br> обратно в \n и снова в <br> s после сохранения.

+0

хорошо, так ты говоришь, что я должен держать это, как он здесь, как тот же. Но когда я показываю информацию, тогда я должен использовать nl2br()? – user2441391

+0

@ user2441391 База данных не заботится, ЧТО вы экономите. Но сохранение простой версии проще, если вы хотите разрешить изменения. Например, если вы хотите отобразить 3-значное значение (пользователь вводит 1 -> дисплей 3), вы собираетесь сохранить «значение» (1) и сделать 3x при его отображении. Затем вы можете изменить «значение» без какого-либо обратного вычисления. И если вы на самом деле хотите отобразить '4x' - вам просто нужно изменить функцию отображения, а не обновлять всю базу данных. – dognose

+0

ОК, я понимаю. У меня есть вопрос. Поскольку в базе данных все равно, что вы сохраняете. Если я сохраню 'A B', не будет ли он сохранен как« A B »или« AB »в базе данных? – user2441391

Смежные вопросы