php 保留html标签,htmlentities在PHP,但保留html标签

你可以得到对应列表character =>实体由

htmlentities使用,具有函数

get_html_translation_table;考虑这个代码:

$list = get_html_translation_table(HTML_ENTITIES);

var_dump($list);

(您可能需要检查手册中该函数的第二个参数 – 也许您需要将其设置为不同于默认值的值)

它会得到你这样的东西:

array

' ' => string ' ' (length=6)

'¡' => string '¡' (length=7)

'¢' => string '¢' (length=6)

'£' => string '£' (length=7)

'¤' => string '¤' (length=8)

....

....

....

'ÿ' => string 'ÿ' (length=6)

'"' => string '"' (length=6)

' string '<' (length=4)

'>' => string '>' (length=4)

'&' => string '&' (length=5)

现在,删除你不想要的对应:

unset($list['"']);

unset($list['

unset($list['>']);

unset($list['&']);

您的列表现在具有所有对应字符=> htmlentites使用的实体,除了你不想编码的几个字符。

现在,你只需要提取键和值的列表:

$search = array_keys($list);

$values = array_values($list);

最后,你可以使用str_replace来替换:

$str_in = '

Camión español

';

$str_out = str_replace($search, $values, $str_in);

var_dump($str_out);

你得到:

string '

Camión español

' (length=84)

这看起来像你想要的;-)

编辑:好,除了编码问题(damn UTF-8,我想 – 我试图找到一个解决方案,并将再次编辑)

第二个编辑几分钟后:似乎你必须在$搜索列表中使用utf8_encode,之前调用str_replace 🙁

这意味着使用这样的东西:

$search = array_map('utf8_encode', $search);

在调用array_keys和调用str_replace之间。

而且,这一次,你应该真正得到你想要的:

string '

Camión español

' (length=70)

这里是代码的完整部分:

$list = get_html_translation_table(HTML_ENTITIES);

unset($list['"']);

unset($list['

unset($list['>']);

unset($list['&']);

$search = array_keys($list);

$values = array_values($list);

$search = array_map('utf8_encode', $search);

$str_in = '

Camión español

';

$str_out = str_replace($search, $values, $str_in);

var_dump($str_in, $str_out);

和全输出:

string '

Camión español

' (length=58)

string '

Camión español

' (length=70)

这一次,应该确定^^

它不真正适合在一行,可能不是最优化的解决方案;但它应该工作正常,并且具有允许您添加/删除任何对应字符的优点=>实体你需要或不。

玩的开心 !

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值