天理教教会地図検索で異字体も含めて検索できるよう対応した記事を書きましたが、技術的な説明をしたいと思います。
現在利用している環境は、文字コードはUTF-8、データベースはMySQL 5.7、言語はPHP7.4.15です。
異体字の処理は、Unicodeの異体字セレクタや、MySQLのCOLLATEなどの機能でなんとかなりそうですが、なんともならないようです。
異体字の一覧があれば、力技でなんとかなりそうなので調べたところ、お~まち様の異体字も含めて検索したい デモ版のソースを流用させてもらうことにしました。
※お~まち様、ありがとうございます。
次に、MySQLでの検索処理ですが、LIKEやINで無く、拡張正規表現のREGEXPを使います。
例えば、高崎ですと、
SELECT * FROM table WHERE name REGEXP '[高髙][崎㟢﨑?嵜埼碕]'
で良いかと思いきや、マルチバイトの日本語には対応していないので、
SELECT * FROM table WHERE name REGEXP '(高|髙)(崎|㟢|﨑|?|嵜|埼|碕)'
と文字列として処理すると、望みの結果がでます。(この記事では石へんの﨑が文字化けしています...)
※日本語でも使えるユーザー定義関数mregexpもありますが、レンタルサーバではインストールできなさそうなので未確認です。
PHPの関数にしてあるので、よかったらお使いください。
itaiji.php
※PHP7.4.0以上で使えるmb_str_splitを利用しているので、ご注意ください。