その際、全角数字と半角数字を同一視したいのですが、どうすればいいでしょうか。
「123」と「123」の検索結果を同じにしたいのです。
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/php_k05.htm
PHP 基礎編5 - 文字列関数 substr、strlen、strpos、split、list、time、crypt - SAK Streets
strtolower で半角に変換したらいいでしょう。
というか SQLは データベース側なので データベースは 何でしょうか?
あ、失礼しました。
半角に変換するのは、先のURLの下のほうにあります。
MySQL側で 取得した項目を半角に変換するような関数が ちょっと見当たらないので
次のようにするしかないと思います。
・検索用の項目を作り、そこには 半角に変換した値を入れるようにする。
それで 検索したらいいでしょう。
ありがとうございます。
http://2php.jp/php/mb_convert_kana.html
2php : PHP mb_convert_kana()
取り合えず、変換だけなら以下のような感じで全角→半角になるはずです
$str = ”123”;
$str = mb_convert_kana($str, ’a’,”Shift_JIS”);
echo $str;
あと、SQL文はここで言う$strで回すと旨く行く筈
ありがとうございます。
03−1234−5678
というデータを、03-1234-5678で検索したい場合は(ハイフンの問題は脇におきます)、これではいけないですよね・・・
http://www.hatena.ne.jp/1124244941#
人力検索はてな - PHPでSQL文を発行し、likeで検索をしています。 その際、全角数字と半角数字を同一視したいのですが、どうすればいいでしょうか。 「123」と「123」の検索結果を同じに..
半角→全角は以下のようなソースで上手くいく筈
$str = ”123”;
$str = mb_convert_kana($str, ’a’,”Shift_JIS”);
echo $str;
SQLはココでいう$strをlikeで検索かければ上手くいくのでは
ありがとうございます。
前の解答のコメントで書いたように、検索の「ゆらぎ」を吸収したいのですが、なかなか一発で決めてくれる関数ってないですよね。
http://www.hatena.ne.jp/1124244941#1
人力検索はてな - PHPでSQL文を発行し、likeで検索をしています。 その際、全角数字と半角数字を同一視したいのですが、どうすればいいでしょうか。 「123」と「123」の検索結果を同じに..
テーブルに格納するデータも全て半角に変換して格納すればどうですか?もちろんオリジナルの項目とは別にキー用のフィールドとして準備します。
検索する際に、検索キーをその変換ロジックに通してSELECTすればいいかと思います。
プログラミング言語が解決する問題ではなく、設計・実装で解決する問題ですね。
なるほど。格納するときに半角変換は考えたのですが、検索用のフィールドを作る手がありましたか。これをやってみます。
ありがとうございます。
strtolowerは小文字への変換では・・・
データベースはMySQLです。