3

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

在我的本地主机上,我有 PHP 版本5.2.9,正如我在PHP 站点上看到的版本4.0.5 nl2br()XHTML兼容的。

然后我绝对不明白为什么没有第二个参数的情况下我的nl2br()return<br>设置为 false 而不是<br />.

这是我发现此错误的方法:

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;
}
4

1 回答 1

4

我不确定我是否了解您要使用此功能完成的工作。首先,您在每个新行中插入 HTML 中断,然后删除除中断之外的所有标签。

先去掉标签再插入 HTML 换行符不是更明智吗?

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()将在所有版本中正常工作。

于 2010-07-04T08:57:22.567 回答