php 最外html标签,php - 用PHP中的htmlspecialchars()替换除某些html标签外的所有HTML标签? - 堆栈内存溢出...

应用htmlspecialchars,然后将给定标签数组的编码实体替换为常规实体

function allow_only($str, $allowed){

$str = htmlspecialchars($str);

foreach( $allowed as $a ){

$str = str_replace("<".$a.">", "", $str);

$str = str_replace("</".$a.">", "".$a.">", $str);

}

return $str;

}

echo allow_only("This is bold and this is italic.", array("b"));

这适用于简单的标签,返回“这是粗体字,并且是斜体字 i>”。

如前所述,这不适用于带有属性的标签,但是可以:

function fix_attributes($match){

return "";

}

function allow_only($str, $allowed){

$str = htmlspecialchars($str);

foreach( $allowed as $a ){

$str = preg_replace_callback("/<(".$a."){1}([\s\/\.\w=&;:#]*?)>/", fix_attributes, $str);

$str = str_replace("</".$a.">", "".$a.">", $str);

}

return $str;

}

echo allow_only('This is bold and this is italic.', array("b","a"));

使用某些属性处理更复杂的标签,因此只允许[]之间列出的字符出现在属性中。 不幸的是" 必须在属性内允许使用,否则它将不起作用,并且也允许所有其他实体使用-但是,仅&quot属性”将被解码。

如所建议的,使用http://htmlpurifier.org/demo.php之类的库来解决这种问题的更好(更安全,更干净)的方法

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值