Проблема html_entity_decode в PHP?

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

Например:

<?php

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

?>

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

Любые идеи о том, что я делаю неправильно?

FYI Я отправляю преобразованную строку в службу уведомлений Apple Push:

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

Ответы

Ответ 1

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

$converted = html_entity_decode($string, ENT_COMPAT, 'UTF-8');

Ответ 2

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

<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;
?>

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