特殊字符不会转换为html实体(html_entity_decode不起作用)

时间:2014-10-20 09:29:50

标签: php html-entities

我正在尝试使用函数对特殊实体进行编码,这是我正在尝试做的事情: 它有一个ratable函数,有ratables星,我有两个显示ratable消息的函数,一个显示默认结果,第二个是当我给它一个新的速率

function showStars($ratableKey) {
...
$textDesc = "<div id=\"rabidRating-$ratingId-description\" class=\"ratingText\">"
                .$this->getStarMessage($rating)."</div>"; 
echo $textDesc 
}

我以两种不同的方式调用getStarMessage

   function getStarMessage($rating) {
    $stars = $this->percentToStars($rating['rating']);
    if ($rating[totalRatings] > 1) $s = "s";
    $div_stars = "<div class=\"rate\">";

    $result= "$stars/$this->stars ".$div_stars." ($rating[totalRatings] avis)</div>";
    $result=  html_entity_decode($result);
    return $result;
}

以defaut方式(在showStars函数中)它工作正常(有或没有html_entity_decode) 但是当我在另一个函数中调用getStarMessage函数时

function doVote($ratableId, $percent) {

    ...

    $rating = $this->loadRating($id);
    $return = $this->getStarMessage($rating);

    echo $return; ==> the problem is here

}

在源代码中显示

<div class="ratingText " id="rabidRating-9-description">2.8/5 &lt;div class="rate"&gt; (141 avis)&lt;/div&gt;</div>

因此,输出就是这个

2.8/5 <div class="rate"> (142 Stars)</div>

它不是作为html实体显示,而是作为简单的字符串显示。

我做错了吗?

这里有一些截图:

显示默认值: Displaying default withour rating

评级后(clik on stars) After clik on stars to rate

1 个答案:

答案 0 :(得分:0)

您希望div.rate呈现为HTML吗?如果是这样,那么你就不应该把&#34;&amp; lt&#34;等实体 - &gt;这与你想要的完全相反 - 它保持&#34;小于&#34;字符串中的字符。 所以,如果我理解你,你的代码必须是

<div class="ratingText " id="rabidRating-9-description">2.8/5 <div class="rate"> (141 avis)</div></div>
祝你好运。