удалить <br /> из текстовой области? - PullRequest
0 голосов
/ 22 сентября 2011

Я пытаюсь сделать разрыв строки после сообщения «Исходное сообщение», я пытался с этим, но он продолжает показывать

---Original message---<br />
message

<textarea id="txtMessage" rows="10" cols="50"><?php echo nl2br(str_replace('<br/>', " ","---Original message---\n".$array['message']));?></textarea>

Я хочу что-то вроде этого:

---Original message---
message

любой совет?

Ответы [ 6 ]

4 голосов
/ 22 сентября 2011

Это должно делать то, что вы хотите:

<?php echo str_replace('<br />', " ","---Original message---\n".$array['message']);?>

nl2br - вставляет разрывы строки HTML перед всеми новыми строками строки ( изphp.net )

Пример:

echo "<textarea>HI! \nThis is some String, \nit works fine</textarea>";

Результат:

new line example in textarea

Но если вы попробуете это:

echo nl2br("<textarea>HI! \nThis is some String, \nit works fine</textarea>");

, вы получите это:

new line with nl2br in texarea

Поэтому вы не должны использовать nl2brперед сохранением в базу данных , в противном случае вам придется избавляться от <br /> каждый раз, когда вы пытаетесь редактировать текст!Просто используйте его, когда вы печатаете его как текст.

1 голос
/ 22 сентября 2011

Функция php "nl2br" принимает переводы строки и преобразует их в теги br. Если вы этого не хотите, вам, вероятно, следует удалить его:).

Хех, избитый Райаном.

1 голос
/ 22 сентября 2011
echo nl2br(str_replace('<br/>', " ", ... ));

должно быть

echo str_replace('<br />', ' ', ... );
0 голосов
/ 19 июня 2014

Если вы хотите сделать nl2br для всего текста, кроме того, что находится внутри текстовой области, вы можете сделать это:

function clean_textarea_of_br($data) {
     return str_replace(array("<br>", "<br/>", "<br />"), "", $data[0]);
}

$message = preg_replace_callback('#<textarea[^>]*>(.*?)</textarea>#is',clean_textarea_of_br,$message);
0 голосов
/ 22 сентября 2011

Вы удаляете разрывы HTML, а затем добавляете их обратно! Посмотрите на ваш код:

nl2br(str_replace('<br/>', " ","---Original message---\n".$array['message']))

Сначала str_replace заменяет '<br/>' пробелом. Затем nl2br добавляет <br> для каждой новой строки (\n), которую он находит.

Удалить nl2br вызов и все готово.

0 голосов
/ 22 сентября 2011

Вы пытаетесь заменить <br/>, но исходный текст содержит <br /> (обратите внимание на пробел).

...