Я использую nl2br
при отображении некоторой информации, которая где-то сохраняется, но когда используются теги HTML, я не хочу добавлять теги для них.
Например, если я использую
<table> <th></th> </table>
он будет преобразован в
<table><br /> <th></th><br /> </table><br />
и это делает много пространств для этой таблицы.
Хо можно разбить теги линий, которые будут добавлены только для другого не HTML-контента?
Благодарю.
Вы можете заменить закрывающие теги и новые строки только закрывающими тегами:
$str = str_replace('> ', '>', $str);
У меня была бы такая же проблема,
Я сделал этот код, добавив <br />
в конце каждой строки, за исключением того, что строка завершена тегом html:
function nl2br_save_html($string) { if(! preg_match("#</.*>#", $string)) // avoid looping if no tags in the string. return nl2br($string); $string = str_replace(array("\r\n", "\r", "\n"), "\n", $string); $lines=explode("\n", $string); $output=''; foreach($lines as $line) { $line = rtrim($line); if(! preg_match("#</?[^/<>]*>$#", $line)) // See if the line finished with has an html opening or closing tag $line .= '<br />'; $output .= $line . "\n"; } return $output; }
Я думаю, что ваш вопрос неправильный. Если вы печатаете
<table> <th></th> </table>
в текстовую область, то независимо от того, что вы делаете, она будет включать <br />
между ними. Потому что это то, что должен делать nl2br
.