• 締切済み

PHP, Mysql で名前のあいまい検索について

日本語(ひらがな、カタカナ)、英語の名前が入り乱れて入っています。 日本人の場合、姓名を逆にして入力することはまずありませんが、 外国の名前の場合、入ってきた名前をそのまま入力しています。 入ってきたというのは色々なサイトから入ってくるため、統一できません。 また韓国人など Park Lin Rin や Park LinRin や Lin Rin Park と入力者によってまちまちだったりします。 このような中からParkさんを '%park%' で検索すれば問題ありませんが、 入力の際に似たような名前の人が過去にいないかどうかをチェックしたいですが、どのようにすればよいでしょうか? 英語名の人も Thomas だったり tom だったりと同じ人が使い分けたりします。 ちょっと考えたのが mb_substr で最初の3文字程度を切り取り、'%$str%'で検索しようとしたのですが、日本語が上手く動いてくれません。 宜しくお願いします。

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

> Thomas だったり tom の時点で、ロジックが固まってないので検索方法でなんとかするのは 無理だと思いますが・・・ 変換テーブルをうまく自作していくしかないと思います

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • PHP/MySQLであいまい検索を

    HP上のテキストボックスに文字を入力し、その値をPHPでMySQL上のデータベースよりあいまい検索をし 該当するデータを表示したいのですが、私の検索キーワードが悪いのか、いいサンプルソースが見つけられません。 MySQLのREGEXP関数を使ってあいまい検索を 行うサンプルは見つけたんですが、これは日本語対応では なく検索文字列によってはうまく検索できない場合が あると聞きました。 何かよいサンプルがあったらURLもしくは ソースをそのままで結構ですので貼り付けていただければ 助かります。 では、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 文字列検索(例えばindex関数)をバイト単位で行いたい

    やりたいことは日本語文字列の処理で、特定の文字を切り抜きたいのですがうまくいきません。 なぜなら、文字列を切り抜くsubstr関数がバイト単位であるのに対し、文字列を検索するindexがバイト単位でおこなわれていないからです。 例: 文字列"12万3456円"から、円だけを取り除きたいとします。 $str = "12万3456円"; $index = index($str,"円"); $newStr = substr($str, 0, $index); indexは7を返すが、substrで0から7番目を切り取っても、バイト単位なのでうまくいきません。 文字列の検索をバイト単位で行う方法を教えてください。 おねがいします。

    • ベストアンサー
    • Perl
  • 英語の名前について

    英語の名前について 英語の名前ありますよね。 Tom,Mike,Linda,Susan... でもこれらってつづりが決まっているじゃないですか。 日本語(ひらがな)なら表音文字だから音と音をくみあわせて無限に名前が作れますが英語ってそうは行かなくないですか? マイクなんてローマ字でいけばMaikuなのにつづりがきまっているからMike。 だとしたら英語圏には同じ名前の人だらけじゃありませんか?! またそうならばどれぐらいの名前のつづりが決まっているのでしょうか?

  • MySQL&PHPで日本語検索

    PHP&MyQLでショッピングサイトを作ろうと制作中です。 今、MySQLで日本語検索ができず行き詰ってしまいました。 日本語を16進数に変換して検索させれば、うまくいきそうだと考えていますが、なかなかうまくいきません。 MySQLに登録した日本語データは「EUC」の文字コードを16進数に変換したものです。検索窓から入力した日本語の文字コードもEUCであれば、そのまま16進数に変換してマッチングしてやれば、検索できそうなのですが、 POSTで取得した日本語の文字コードが、どうしてもEUCになりません。 (mb_convert_encodingを使用してもだめだし・・・) POSTで取得した文字列の文字コードの変換は、どうすればいいのでしょうか?

    • ベストアンサー
    • PHP
  • Outlook2003 アドレス帳の名前について

    Outlook2003 アドレス帳の名前について教えてください。 連絡先の登録は、英語と日本語を混在して使用しております。日本語で登録しているものは問題ないのですが、英語(ローマ字)で登録している場合「アドレス帳」の名前の表示が「姓名」が逆に表示されてしまいます。 <連絡先:漢字で入力した場合> 姓:山田 名:太郎  アドレス帳の名前は、「山田太郎」と表示される。 <連絡先:ローマ字で入力した場合> 姓:Yamada 名:Taro アドレス帳の名前は、「Taro Yamada」と表示される。 ローマ字で入力した場合でも、姓名の並びで「Yamada Taro」のように表示することは可能でしょうか?

  • 初心者 Googleの検索

    初歩的な質問です。 検索をGooからGoogleに変えようと思っているのですがGoogleはページを開くと入力が英語なので[半角/全角]ボタン押してから日本語入力にして検索しています。 皆さんもも同じようにページ開くたび[半角/全角]ボタン押して日本語入力に変えて検索しているのでしょうか?それとも英語のまま検索?それとも設定とかで初めから日本語入力に出来たりします?

  • 日本人が英語で自己紹介するとき

    日本人が英語で自分の名前を言うとき、多くの人が、 姓と名を逆にして言います。 中学校の英語の授業でもそう習いました。 それは、なぜ? これは、郷に入らば郷に従えみたいな、考え方で、 英語を母国語とする人たちが、名、姓の順番が 彼らの名前で、それにあわせるからでしょうか? だったら、なぜ、名姓の順番の名前の外国人が 日本に来たとき、日本語で自分の名前を言うときに 姓名の順番で名前を言わないのか? それは、きっと名姓の順番の名前が彼らの名前だからです。 じゃあ、なぜ、日本人の名前は姓名の順番が名前なのに、 英語で名前を告げるとき、姓と名をわざわざ逆にして、 言うのでしょうか?

  • facebookで英語名での検索にかかりたい

    フェイスブックの友達検索で、相手方が私の名前を英語名(ローマ字)で 入力して探し出せるようにするにはどうしたらよいか教えてください。 登録名は日本語ですが、ニックネーム(別名)のところにローマ字表記の名前を 入れてみました。すると私の表示は「日本語名(ローマ字名)」と表記されました。 しかし、友達検索で、ローマ字名で自分の名前を入れても出てきません。 (日本語表記のみの人(同じ読み)も出ていますが私のものは出ません) 外国の知り合いが私のページを探せるようにしたいのです。 (日本語名の表記はやめたくありません) どうぞよろしくお願いいたします。

  • 英語において,2人称の名前を主語に置くことはありますか.

    英語において,2人称の名前を主語に置くことはありますか. 非常に初歩的質問で恐縮です.日本語では,例えば母親が息子の太郎に向かって 「太郎は昨日アイスクリームを食べたかい」 といった質問をよくする訳ですが,同じく英語圏の母親が息子のTomに向かって      “Did Tom eat ice cream yesterday?” といった質問をすることがあるか…という疑問です.通常は      “Tom, did you eat ice cream yesterday?” 等とするでしょうが….実際,このような設定下で最初のような英文を私は目にしたことがありません.もしないとすると,他の言語でもほとんどないのでしょうね.もし,日本語と同様の表現をする原語が他にあれば,教えて頂けないでしょうか. どうぞ宜しくお願い致します.

  • 長文の最後の文字をキレイにカットしたい

    あいうえおかきくけこ ↓ あいう... としたいのですが、 あいう・.. となってしまいます。 [使用した命令] $str = 'あいうえおかきくけこ'; $tmp = substr($str,0,7); $tmp .= '...'; 半角が混じるケースもありますので、$tmp = substr($str,0,6);とするのではなくて、末尾の日本語をきれいに処理する方法を知りたいのですが、どなたかご教授お願いします。

    • ベストアンサー
    • Perl
このQ&Aのポイント
  • MFC-J7100CDWを使用してPCにスキャンする際、保存先ファイルが分からない状況です。スキャンしたファイルはどこに保存されるのでしょうか?
  • Windowsを使用してMFC-J7100CDWでスキャンしたファイルの保存先がわかりません。無線LANで接続している状況です。
  • MFC-J7100CDWでスキャンしたファイルの保存先が不明です。無線LAN接続しているWindows環境での問題です。
回答を見る