我在使用nl2br
時顯示一些信息保存在某處,但是當使用HTML標籤時,我不想爲它們添加<br>
標籤。使用帶html標籤的nl2br
例如,如果我用
<table>
<th></th>
</table>
將轉化爲
<table><br />
<th></th><br />
</table><br />
,這讓很多的這個表空間。
Ho可以打破線條標籤只能添加其他非HTML內容?
謝謝。
我在使用nl2br
時顯示一些信息保存在某處,但是當使用HTML標籤時,我不想爲它們添加<br>
標籤。使用帶html標籤的nl2br
例如,如果我用
<table>
<th></th>
</table>
將轉化爲
<table><br />
<th></th><br />
</table><br />
,這讓很多的這個表空間。
Ho可以打破線條標籤只能添加其他非HTML內容?
謝謝。
您可以通過僅關閉標籤更換結束標記和換行符:
$str = str_replace('>
', '>', $str);
呃,在這種情況下字面換行是可怕的。更好的使用'「> \ n」' – ThiefMaster 2011-05-24 09:19:21
heh,奇怪的代碼風格:)新行符號可以用'PHP_EOL'常量或''\ n「'表示。 – 2011-05-24 09:20:00
謝謝你。 :) – 2011-05-24 09:21:15
我認爲你的問題是錯誤的。如果你打字
<table>
<th></th>
</table>
到文本區域,然後不管你做什麼,這將包括在它們之間<br />
。因爲這是nl2br
應該做的。
我最好了同樣的問題,
我做了這個代碼,每行除了結尾處添加一個<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;
}
謝謝Nicalas。 :) – 2012-12-21 14:42:02
這是一個非常模糊的問題,這相當於「我使用功能做一些事來的一些信息的地方,但我不希望使用它在某些SI tuations「。只是不要在那些你不想要新的'
'的字符串上調用'nl2br'? – 2011-05-24 09:10:45
那麼如果我不叫它,那麼其他非html標籤呢,他們需要斷線。解決方案是@Michiel Pater的帖子。如果你沒有任何解決方案,請不要發帖。你可以告訴我不要使用它,當我需要它時..請不要發佈.. – 2011-05-24 09:20:34