2

どこかに保存されている情報を表示するときに使用nl2brしますが、HTML タグを使用する場合はタグを追加したくありません<br>

たとえば、私が使用する場合

<table>
<th></th>
</table>

に変換されます

<table><br />
<th></th><br />
</table><br />

これにより、このテーブルに多くのスペースが確保されます。

他の非 HTML コンテンツにのみ改行タグを追加できますか?

ありがとう。

4

3 に答える 3

7

私は同じ問題を抱えていましたが、

<br />行がhtmlタグで終了する場合を除いて、各行の最後にaを追加して、このコードを作成しました。

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;
}
于 2012-12-17T08:53:04.050 に答える
2

終了タグと改行を終了タグのみに置き換えることができます。

$str = str_replace('>
', '>', $str);
于 2011-05-24T09:11:13.827 に答える
0

あなたの質問は間違っていると思います。入力している場合

<table>
<th></th>
</table>

テキスト領域に入力すると、何をしても<br />それらの間に含まれます。それはnl2br、やるべきことだからです。

于 2011-05-24T09:11:04.823 に答える