我正在处理我的小型网络应用程序的重构。整晚。今天当我开始测试时,我发现的第一个错误是系统PHP函数nl2br()
的问题。
在我的本地主机上,我有PHP版本 5.2.9 ,正如我在PHP site上看到的版本 4.0.5 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, '<br />');
} else {
$withoutTags = strip_tags($decodeHTML, '<br>');
}
return $withoutTags;
}
答案 0 :(得分: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()
将在所有版本中正常工作。