我从昨天起就一直在与这个问题作斗争 – 不幸的是无济于事(并非完全没有,我找到了某种解决方法),经过一些研究和重读文档后,我仍然没有多少目瞪口呆和困惑.
让我们假设有一个丑陋的字符串,它已经具有正确的html编码的特殊字符.像这样 :
$exampleString = '<div id="dynamic2"> <div
id="iStoreProductLongDescription" class="iStoreBox">
<div class="iStoreBoxWrapper"> <div
class="iStoreBoxContent"> <p style="text-
align:justify;"> </p> <p style="text-
align:justify;"><span style="font-
size:large;"><span> Just a bunch of text here, at
the end. yedyedyed';
现在我想把这个字符串输出为一个简单,干净的字符串,所以首先我需要将它转换为html标签,然后剥离标签.所以我猜以下链应该有效:
$result = strip_tags(htmlspecialchars_decode($exampleString));
但事实并非如此,在网络的来源中echo $的结果是:
<div id="dynamic2"> <div id="iStoreProductLongDescription" class="iStoreBox"> <div class="iStoreBoxWrapper"> <div class="iStoreBoxContent"> <p style="text-align:justify;"> </p> <p style="text-align:justify;"><span style="font-size:large;"><span> Just a bunch o text here, at the end. yedyedyed
在用户输出中,html标签是可见的并且保持不变.但是,当我做这样的事情时:
$result = strip_tags(html_entity_decode(htmlspecialchars_decode($exampleString)));
然后它像魅力一样工作,并向用户输出所需的字符串,同样在web源中:
Just a bunch o text here, at the end. yedyedyed
问题是 – 为什么不
strip_tags(htmlspecialchars_decode($exampleString));
工作(我认为)它应该工作?
任何见解都非常感激.
干杯
解决方法:
如果你仔细观察,你会看到你有
&放大器;放大器; LT;并且它不是& lt;.
所以,你首先htmlspecialchars_decode只是转换
&放大器;放大器; LT;到& lt;
这肯定是一个特殊的实体,以后可以用第二次运行的htmlspecialchars_decode(或html_entity_decode)解码为
标签:php,html
来源: https://codeday.me/bug/20190609/1201958.html