人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

●質問者: quocard
●カテゴリ:インターネット ウェブ制作
✍キーワード:dat PHP SJIS UTF-8 アドバイス
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Paul
●35ポイント

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)

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

◎質問者からの返答

ありがとうございます。

参考になりました。

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

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

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

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


2 ● Paul
●35ポイント

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...


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

◎質問者からの返答

ありがとうございます。

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

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

のUTF-8の部分を

今回紹介していただいた

echo(mb_internal_encoding());

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

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

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

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

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

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

ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ