1. ホーム
  2. php

[解決済み] –のようなHTMLエンティティを同等の文字に変換するにはどうすればよいですか?

2022-03-04 06:03:45

質問

ローカルユーザーのコンピュータに保存されるファイルを作成しています(ウェブブラウザでは表示されません)。

現在、私は html_entity_decode のような文字が変換されません。 – (これはNダッシュです)そして、私は他のどのような関数を使用すべきかと考えていました。

例えば、ファイルをソフトに取り込むと、ndashや単なる-ではなく、次のように表示されます。 – . を使うことができるのは知っています。 str_replace しかし、この文字で起こっているのなら、データは動的なので、他の多くの文字でも起こる可能性があります。

解決方法は?

対象となる文字セットを定義する必要があります。 – はデフォルトのISO-8859-1文字セットでは有効な文字ではないので、デコードされません。出力文字セットとしてUTF-8を定義すれば、デコードされます。

echo html_entity_decode('–', ENT_NOQUOTES, 'UTF-8');

可能な限り、そもそもHTMLエンティティは避けるべきでしょう。そのエンコードされたデータがどこから来たのか知りませんが、もしデータベースなどにこのように保存しているのであれば、それは間違った方法です。データは常にUTF-8にエンコードして保存し、必要なときだけHTMLエンティティに変換するか、さもなければエスケープして出力してください。