phpとmysqlで英数文字を半角、全角両方で検索する方法

以下のような内容でデータベースにデータが格納されている場合、

[text]MEDIA運営ニッキ[/text]

検索文字列が、

[text]media[/text]

だとヒットしません。

mysqlは通常、小文字と大文字は関係なく検索してくれるのですが、 半角全角に関してはmysql側では解決出来ないので、スクリプト言語の方で解決します。

phpの場合だと以下のようになります。 mb_convert_kanaを利用して、検索文字列に対して 半角、全角両方の文字列を用意し、それを使って検索するという流れになります。 結構強引な方法ですが、これが一番確実でしょう。

[php] $half_sized_keyword = mb_convert_kana($keyword, ‘a’, ‘utf-8’);
$full_sized_keyword = mb_convert_kana($keyword, ‘A’, ‘utf-8’); [/php]

検索クエリは以下のようになります。

[php] $query = "SELECT * FROM table WHERE field_name LIKE ‘%$half_sized_keyword%’ OR field_name LIKE ‘%$full_sized_keyword%’"; [/php]

こうすれば、この記事の最初に書いたような例ではヒットするようになります。 めでたしめでたし。

開発環境は以下。

php5.3

mysql5.1