PHP html_entity_decode でのエンティティ文字の変換(É→? など)
PHPでHTML中の文字を処理している時に、cafÉ(É(U+00C9)) のような文字をUTF-8の文字列にする必要があるのだが、html_entity_decodeを使ってみたところ、うまくいかない。
テストしてみたところ、
mb_internal_encoding("UTF-8");
$src="CAFÉ";
$dest = html_entity_decode($src);
-> result CAFノ
$dest = html_entity_decode($src,ENT_NOQUOTES,'ISO-8859-1');
-> CAFノ
$dest = html_entity_decode($src,ENT_NOQUOTES,'ISO-8859-15');
-> CAFノ
$dest = html_entity_decode($src,ENT_NOQUOTES,'UTF-8');
-> CAFÉ
どうやら、明示的にUTF-8を指定する必要があるようだ。
PHP: html_entity_decode - Manual PHP: html_entity_decode - Manual
のcharsetの説明文ではよく分からなかったが、たぶん、É -> charsetの文字にするということなのかな。。。