Как преобразовать ‹br /› в новую строку в предварительно заполненной текстовой области

У меня проблемы с тегами <BR />, появляющимися внутри предварительно заполненной формы textarea (без разрывов, очевидно). Таким образом, эти теги разрыва должны быть преобразованы в /n в текстовой области. Этот предварительно заполненный текст извлекается через URL-адрес, который также содержит теги разрыва.

В основном, что происходит и что мне нужно:

Мне нужно получить блок текста с предыдущей страницы (которая изначально была извлечена из базы данных) и загрузить этот блок текста в поле textarea на странице отправки формы. Затем пользователь заполняет остальные поля формы и отправляет форму, после чего эта информация сохраняется в определенной таблице базы данных.

Чтобы блок текста правильно отображался на первой странице, мне пришлось использовать nl2br, чтобы этот раздел правильно разбивался на странице. Очевидно, теперь он выводит этот текст с разрывами вместо новых строк.

Это означает, что когда вы нажимаете на ссылку для заполнения формы на следующей странице, в ссылке есть теги разрыва, которые, в свою очередь, отображаются внутри текстового поля на следующей странице, а также в URL-адресе.

Я не понимаю, что мне нужно сделать, чтобы снова заменить эти <BR /> на /n. Кажется, я мог бы использовать str_replace или preg_replace, но мне еще предстоит найти пример того, как использовать любой из них в сочетании с чем-то вроде:

<textarea rows="10" cols="50"><? if(isset($_GET['text-property'])){ echo $_GET['text-property']; }?></textarea>

Имейте в виду, что я все еще в процессе изучения PHP, поэтому мне действительно нужны подробности и, желательно, примеры, если это вообще возможно.

Спасибо!


person CSteel    schedule 12.11.2012    source источник


Ответы (1)


Вам нужно использовать preg_replace,

<textarea rows="10" cols="50"><? if(isset($_GET['text-property'])){ echo preg_replace('/<br[^>]*?>/si', '\n',$_GET['text-property']); }?></textarea>

Демо

person Teena Thomas    schedule 12.11.2012
comment
Спасибо, это помогло преобразовать разрыв в новую строку. Но теперь он просто отображает /n вместо BR и все еще не переводит текст на следующую строку. Есть идеи, как на самом деле сломаться? - person CSteel; 13.11.2012
comment
На самом деле, ничего... Я понял это с небольшим изменением. Я использовал PHP_EOL, где у вас было '/n'. Итак, теперь это выглядит так: ‹textarea rows=10 cols=50›‹? if(isset($_GET['text-property'])){ echo preg_replace('/‹br[^›]*?›/si', PHP_EOL,$_GET['text-property']); }?›‹/текстовое поле› - person CSteel; 13.11.2012