php函数nl2br(),PHP在函数nl2br中的奇怪行为

我当时正在处理小型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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值