PHPでの質問です。

検索してマッチしたら処理をする部分に
if( strpos($buf,$search_keyword)!==false )

というのを使ってます。
data.datというファイルの中に
4H123456
という文字があります。
123で検索をするとヒットするのですが
4Hで検索するとヒットしません。
4H123456という文字列はSJISコードのファイルに保存してます。
これをUTF-8に変換して
4Hを検索するとヒットしますが
今度は文字化けが起こってしまいます。
どのようにすれば4Hで検索してもヒットするようになるのでしょうか?
アドバイスをいただければと思います。

回答の条件
  • 1人2回まで
  • 登録:2007/01/05 23:39:50
  • 終了:2007/01/08 20:25:26

回答(2件)

id:PaulYamamoto No.1

Paul回答回数113ベストアンサー獲得回数22007/01/06 02:42:02

ポイント35pt

if( strpos($buf,$search_keyword)!==false )

その処理を行う前に、

mb_internal_encoding ("SJIS");

とか入れてみてはいかがでしょうか?

http://search.net-newbie.com/php/function.mb-internal-encoding.h...


また、

$str = mb_convert_encoding($str, "UTF-8");

という方法もあります。

http://search.net-newbie.com/php/function.mb-convert-encoding.ht...


PHPの設定(mbstring.internal_encoding)

の部分がわかればもう少し的確にアドバイスできるのですが・・・

id:quocard

ありがとうございます。

参考になりました。

紹介していただいた方法でもうまくいったのですが

全てのファイルをUTF-8にするとうまくいきました。

しかしサーバーによってはUTF-8だとうまく表示できないことがあるようです。

これはサーバの設定か何かに依存するのでしょうか。

2007/01/06 10:16:59
id:PaulYamamoto No.2

Paul回答回数113ベストアンサー獲得回数22007/01/06 12:49:56

ポイント35pt

echo(mb_internal_encoding());

上記で、PHPの文字コードの設定が分かります。

(もちろんphpinfo();でもOKです。)

http://search.net-newbie.com/php/function.mb-internal-encoding.h...


文字コードの設定は、サーバーによってバラバラなので注意が必要です。

これら設定は、上記の方法や、ini_set() で、

コードの中で変更できます。

http://php.morva.net/manual/ja/function.ini-set.php


また、.htaccessファイルで設定を変更することも可能です。

http://www.shigeweb.jp/php/project_p/?section=setup&page=hta...


すでにご存知の内容でしたら失礼しました。

id:quocard

ありがとうございます。

先ほど紹介していただいた

$str = mb_convert_encoding($str, "UTF-8");

のUTF-8の部分を

今回紹介していただいた

echo(mb_internal_encoding());

で求めたものをいれてやればいけそうな気がします。

htaccessでも設定が可能なサーバであれば

そちらの方を触ったほうが手っ取り早いですが

いずれは解決しなければいけない問題ですので

じっくりとやってみます。

とても参考になりました。

ありがとうございます。

2007/01/06 13:44:50

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません