我当时正在处理小型Web应用程序的重构.一整夜.今天,当我开始测试时,发现的第一个错误是系统PHP函数nl2br()存在问题.
在我的本地主机上,我具有PHP版本5.2.9,并且从版本4.0.5的PHP site中可以看到,nl2br()是XHTML兼容的.
那么我绝对不明白为什么我的nl2br()返回< 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, '
');
} else {
$withoutTags = strip_tags($decodeHTML, '
');
}
return $withoutTags;
}
解决方法:
我不确定我是否理解您要使用此功能完成的工作.首先,在每一行中插入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()可以在所有版本中正常工作.
标签:behavior,php,function
来源: https://codeday.me/bug/20191106/1999103.html