将 nl2br 与 html 标签一起使用

发布于 2024-11-09 12:40:05 字数 380 浏览 1 评论 0原文

当显示保存在某处的一些信息时,我使用 nl2br ,但是当使用 HTML 标记时,我不想为它们添加
标记。

例如,如果我使用

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

它,它将被转换为

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

并且为该表留出很多空间。

为何只能为其他非 HTML 内容添加换行标签?

谢谢。

I use nl2br when displaying some information that is saved somewhere, but when HTML tags are used I want not to add <br> tags for them.

For example if I use

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

it will be transformed to

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

and that makes a lot of spaces for this table.

Ho can break line tags be added only for other non-HTML content?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梦魇绽荼蘼 2024-11-16 12:40:05

我也遇到了同样的问题,

我编写了这段代码,在每行末尾添加
,除非该行以 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;
}

I'd the same issue,

I made this code, adding a <br /> at the end of each line except if the line finished with an html tag:

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;
}
没有你我更好 2024-11-16 12:40:05

您可以仅通过结束标签替换结束标签和换行符:

$str = str_replace('>
', '>', $str);

You could replace the closing tags and newlines by only closing tags:

$str = str_replace('>
', '>', $str);
羞稚 2024-11-16 12:40:05

我认为你的问题是错误的。如果您在文本区域中输入内容

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

,那么无论您做什么,它们之间都会包含
。因为这是 nl2br 应该做的事情。

I think your question is wrong. If you are typing

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

into a text area then no matter what you do It will include <br /> in between them. Because it is what nl2br is supposed to do.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文