html_entity_decode проблема в PHP? - PullRequest
16 голосов
/ 09 января 2011

Я пытаюсь преобразовать сущности HTML из исходной строки в эквивалент их буквенного символа.

Например:

<?php

$string = "Hello &#8211; World";
$converted = html_entity_decode($string);

?>

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

Есть идеи о том, что я делаю неправильно?

К вашему сведениюпреобразованная строка в службу push-уведомлений Apple:

$payload['aps'] = array('alert' => $converted, 'badge' => 1, 'sound' => 'default');
$payload = json_encode($payload);

Ответы [ 2 ]

32 голосов
/ 09 января 2011

&#8211; сопоставляется с символом UTF-8 (тире), поэтому в качестве кодировки символов необходимо указать UTF-8:

$converted = html_entity_decode($string, ENT_COMPAT, 'UTF-8');
4 голосов
/ 09 января 2011

Попробуйте использовать кодировку

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
<?php
$string = "Hello &#8211; World";
$converted = html_entity_decode($string , ENT_COMPAT, 'UTF-8');
echo $converted;
?>

Это должно работать И это должно быть преобразовано также в источнике

...