php,如何将特殊字符转换为文本?

时间:2011-07-13 18:35:13

标签: php wordpress

xxxi有the_title()返回一些文字,在本例中为Blue & Whiny

我们可以看到的问题是&角色看起来不同

如何将Blue & Whiny变为Blue & Whiny我尝试过:htmlspecialchars_decode(the_title())html_entity_decode(the_title())htmlspecialchars(the_title())一无所获。

我想将&转换为&

没有太多要分享的代码,我只是这样做:<?php the_title() ?>我得到Blue &#038; Whiny。如果我使用get_the_title()它不会显示任何内容

有什么想法吗? 感谢

EDIT1。生病分享一些代码:

<script type="text/javascript">
function showShareUI() {

var act = new gigya.services.socialize.UserAction();
act.setUserMessage("Check out this article.");
act.setTitle("Trends on Explore Talent - <?php  the_title(); ?>");
act.setDescription("<?php  get_the_content();  ?>");
act.setLinkBack("<?php  the_permalink();  ?>");
act.addActionLink("Check out this article", "<?php the_permalink(); ?>");

var image = {
src: 'http://xxx.com/wp-content/uploads/2011/05/BOTTOM_BANNER.jpg',
href: '<?php the_permalink();?>',
type: 'image'
}
act.addMediaItem(image);

var params = 
{
userAction: act,  // The UserAction object enfolding the newsfeed data.                                           
onError: onError,  // onError method will be summoned if an error occurs. 
onSendDone: onSendDone // onError method will be summoned after 
,showEmailButton: true
    // Gigya finishes the publishing process.
};

gigya.services.socialize.showShareUI(conf, params);
}

function onError(event) {
alert('An error has occured' + ': ' + event.errorCode + '; ' + event.errorMessage);
}

function onSendDone(event)
{
document.getElementById('status').style.color = "green";
document.getElementById('status').innerHTML = 'The newsfeed has been posted to: ' +     event.providers;
}
</script>

我已经尝试了一切。这开始让我烦恼......

5 个答案:

答案 0 :(得分:11)

html_entity_decode()是正确的方法。

html_entity_decode("Blue &#038; Whiny");

将产生:

  

蓝&amp;烦躁

如果它不起作用,请确保没有其他问题 - 例如将字符串传递给双重编码的字符串,或稍后再次在字符串上运行htmlentities()

演示:http://codepad.org/BHXGWXJi

使用文字字符串和var_dump()输出进行仔细检查,您应该看到解码后的版本。然后是var_dump(the_title()),以确保您实际上将您认为的内容传递给html_entity_decode()

答案 1 :(得分:5)

html_entity_decode应该做到这一点。如果没有,请尝试指定第三个参数$charset

类似的东西:

echo html_entity_decode(the_title(), ENT_QUOTES, 'UTF-8');

答案 2 :(得分:3)

the_title()直接打印标题,因此直接在其周围添加html_entity_decode()将无效。但是,您可以使用其第三个函数参数禁止打印。 E.g。

<?php echo html_entity_decode(the_title('', '', false)) ?>

还有get_the_title(),它不会直接打印标题,但它需要您想要标题的帖子的ID,与the_title相比,它打印当前的标题在The Loop发帖。所以你需要做这样的事情:

<?php echo html_entity_decode(get_the_title($post->ID)) ?>

实际上,你应该能够做到:

<?php echo $post->post_title ?>

这些实用程序功能的唯一原因是为了逃避事情并添加标签和内容。如果您只想要原始输入,可以直接打印。

这不会解决您的所有问题,因为您在JavaScript字符串中回显它,因此您需要转义某些字符。 json_encode()应该可以解决问题,但请查看问题"Pass a PHP string to a Javascript variable (including escaping newlines)"了解更多详情。

答案 3 :(得分:2)

试试这个:

echo(mb_convert_encoding(the_title(), "UTF-8", "HTML-ENTITIES"));

答案 4 :(得分:1)

看看这是否适用于你

$convmap = array (0x0, 0xffff, 0, 0xffff);
//$str = mb_decode_numericentity (the_title(), $convmap, 'UTF-8' );
$str = mb_decode_numericentity ("&#038;", $convmap, 'UTF-8' );
echo $str;

http://www.php.net/manual/en/function.mb-decode-numericentity.php