проблема декодирования сущности html в PHP?


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

Например:

<?php

$string = "Hello – World";
$converted = html_entity_decode($string);

?>

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

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

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

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

2 ответа:

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

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

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

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

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