我从昨天起就一直在与这个问题作斗争 - 不幸的是无济于事(并非完全没有,我找到了某种解决方法),经过一些研究和重读文档后,我仍然很少傻眼了,迷茫了。
我们假设有一个丑陋的字符串,它已经具有正确的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)));
然后它就像一个魅力,并向用户输出所需的字符串,同样在网络源中:
最后,这里只是一堆文字。 yedyedyed
问题在于 - 为什么没有
strip_tags(htmlspecialchars_decode($exampleString));
工作(我认为)它应该工作? 任何见解都非常赞赏。
干杯
答案 0 :(得分:3)
如果你仔细观察,你会看到你有
&lt;
并且它不是<
。
所以,你首先htmlspecialchars_decode
转换
&lt;
至<
肯定是一个特殊的实体,以后可以通过第二轮htmlspecialchars_decode
(或html_entity_decode
)到<
进行解码,但不会被strip_tags
删除。< / p>
答案 1 :(得分:2)
尝试这样:
<?
if($sss_article_featuretitle==""){?>
<?php echo mb_strimwidth(the_title(), 0, 40, '...'); ?>
<?php } else { //line 81
echo $sss_article_featuretitle;
}
?>
结果应为:
$exampleString = '&lt;div id="dynamic2"&gt; &lt;div
id="iStoreProductLongDescription" class="iStoreBox"&gt;
&lt;div class="iStoreBoxWrapper"&gt; &lt;div
class="iStoreBoxContent"&gt; &lt;p style="text-
align:justify;"&gt; &lt;/p&gt; &lt;p style="text-
align:justify;"&gt;&lt;span style="font-
size:large;"&gt;&lt;span&gt; Just a bunch of text here, at
the end. yedyedyed';
$result = htmlspecialchars_decode($exampleString); // this will decode the entities
echo $result;
html_entity_decode()之后:
<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 = html_entity_decode($result); // this will print with HTML
echo $result;
在strip_tags()之后:
Just a bunch of text here, at
the end. yedyedyed
结果应该是(没有html标签):
$result = strip_tags($result); // this will strip your html tags
$echo $result;