1

HTMLエンティティをソース文字列からリテラル文字に相当するものに変換しようとしています。

例えば:

   <?php

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

    ?>

これは画面上のエンティティを正しく変換しますが、HTML コードを見ると、まだ明示的なエンティティが表示されています。HTMLページ内で文字列を使用していないため、エンティティを文字通り変換するように変更する必要があります。

私が間違っていることについてのアイデアはありますか?

参考までに、変換された文字列を Apple のプッシュ通知サービスに送信しています。

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

2 に答える 2

0

どこから結果を取得しますか。たとえば、エンティティはどこに表示されますか? error_log変換後ですか?

文字列を UTF-8 でエンコードする必要があるためhtml_entity_decode、他の 2 つのパラメーターを に追加する必要があるかもしれません。json_encodeこれを試して:

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

編集はい、phpsh で確認しました。2 つのパラメーター (特に UTF-8) を追加する必要があります。

于 2012-04-26T06:36:49.277 に答える
0

エンティティを文字にデコードするには、文字をhtml_entity_decodeどのエンコーディングにするかを知る必要があります。「ü」は、Latin-1、UTF-8、UTF-16、およびその他の多くのエンコーディングで表すことができます。デフォルトは Latin-1 です。&#8211;(–, EN DASH) は Latin-1 では表現できません。したがって、変更されないままです。UTF html_entity_decode-8 など、その文字を表現できるエンコーディングにデコードするように指示します。

html_entity_decode($str, ENT_COMPAT, 'UTF-8')
于 2012-04-26T06:40:02.627 に答える