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

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

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

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

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

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

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

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

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

Спасибо!

1 ответ

Решение

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

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

демонстрация

Другие вопросы по тегам