この文字コードというのか、これ自体をちゃんと理解してないのですが、あ
という文字はあ
を示しています。
変換については、こちらのサイトで確認できます。
では、この変換をPHPではどう実装すればできるのでしょうか?
ヒントはPHPのドキュメントのhtml_entity_decodeのページに書いてありました。
変換コードの実装と確認
以下のようなメソッドを作成しました。
<?php function convert($input) { return preg_replace_callback( '/(&#[0-9]+;)/', fn($m) => mb_convert_encoding($m[1], 'UTF-8', 'HTML-ENTITIES') , $input); }
これに対して、こんにちは世界!
という文字を渡してみましょう。
<?php function convert($input) { return preg_replace_callback( '/(&#[0-9]+;)/', fn($m) => mb_convert_encoding($m[1], 'UTF-8', 'HTML-ENTITIES') , $input); } echo convert('こんにちは世界!');
これを実行していきます。
$ php test.php
こんにちは世界!
このように、こんにちは世界!
からこんにちは世界!
という文字に戻すことができました。
さいごに
この&#[0-9]+;
の文字のことをなんて呼ぶのか知らないので、もしご存知であればコメント等で教えていただきたいです。HTML-ENTITIESって書いてるからHTMLエンティティとかなのかな。