PHP, как конвертировать специальные символы в текст? - PullRequest
4 голосов
/ 13 июля 2011

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 ]

11 голосов
/ 13 июля 2011

html_entity_decode() - правильный способ сделать это.

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

Будет производить:

Blue & Whiny

Если это не работает, убедитесь, что у вас нет другой проблемы - например, передача ему строки с двойным кодированием или повторное выполнение htmlentities() для строки позже.

Демонстрация: http://codepad.org/BHXGWXJi

Двойная проверка с литеральной строкой и var_dump() выводом, вы должны увидеть расшифрованную версию.Затем var_dump(the_title()), чтобы убедиться, что вы действительно передаете то, что вы думаете, html_entity_decode().

5 голосов
/ 13 июля 2011

html_entity_decode должно сработать. Если нет, попробуйте указать третий параметр $charset.

Что-то вроде:

echo html_entity_decode(the_title(), ENT_QUOTES, 'UTF-8');
3 голосов
/ 13 июля 2011

the_title() напрямую печатает заголовок, поэтому добавление html_entity_decode() непосредственно вокруг этого не сработает.Однако вы можете остановить печать с помощью третьего аргумента функции.Например,

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

Также есть get_the_title(), который не печатает заголовок напрямую, но требует идентификатор сообщения, название которого вы хотите, в отличие от the_title, который печатает заголовок текущего сообщения в The Loop .Таким образом, вам нужно сделать что-то вроде этого:

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

И на самом деле, вы должны быть в состоянии просто сделать:

<?php echo $post->post_title ?>

Единственная причина, по которой эти служебные функции - это избегать вещейдля вас и добавить теги и прочее.Если вам нужен только необработанный ввод, вы можете распечатать его напрямую.

Однако это не решит все ваши проблемы, поскольку вы отображаете его внутри строки JavaScript, поэтому вам нужно экранировать определенные символы,json_encode() должен сделать свое дело, но см. Вопрос «Передать строку PHP в переменную Javascript (включая экранирование строк)» для получения более подробной информации.

2 голосов
/ 13 июля 2011

Попробуйте это:

echo(mb_convert_encoding(the_title(), "UTF-8", "HTML-ENTITIES"));
1 голос
/ 13 июля 2011

посмотрим, сработает ли это для вас

$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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...