首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数nl2br中的奇怪行为

函数nl2br中的奇怪行为
EN

Stack Overflow用户
提问于 2010-07-04 08:42:39
回答 1查看 480关注 0票数 3

我在处理我的小web应用程序的重构。一整晚。今天,当我开始测试时,我发现的第一个bug是系统PHP函数nl2br()的问题。

在我的本地主机上,我有PHPVersionXHTML5.2.9,正如我在PHP站点上看到的,来自4.0.5版本的 nl2br()是符合XHTML的。

然后,我完全不明白为什么我的nl2br()在没有第二个参数设置为false而不是<br />的情况下返回<br>

下面是我发现这个bug的方法:

代码语言:javascript
复制
public function eliminateTags($msg) {
    $setBrakes = nl2br($msg);
    $decodeHTML = htmlspecialchars_decode($setBrakes);

    # Check PHP version
    if((int)version_compare(PHP_VERSION, '4.0.5') == 1) {
        $withoutTags = strip_tags($decodeHTML, '<br />');
    } else {
        $withoutTags = strip_tags($decodeHTML, '<br>');
    }

    return $withoutTags;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-04 08:57:22

我不知道你想用这个函数做什么。首先,在每一行中插入HTML断点,然后除去除断点之外的所有标记。

首先剥去标签,然后插入HTML换行,难道不是更明智吗?

代码语言:javascript
复制
public function eliminateTags($msg) {
    $decodeHTML = htmlspecialchars_decode($msg);
    $withoutTags = strip_tags($decodeHTML);
    $setBreaks = nl2br($withoutTags);

    return $setBreaks;
}

编辑:

显然,您没有正确地使用strip_tags()。您需要问PHP哪个标记要排除,哪个是<br>,而不是<br />。要求PHP排除<br />就像要求排除不起作用的<p></p>

这反过来意味着您不能检查PHP strip_tags()将像在所有版本中一样工作。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3174185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档