[PHP-users 31157] Re: grepでの文字検索とstrposでの文字検索の違い

Seiji Masugata s.masugata @ digicom.dnp.co.jp
2006年 12月 29日 (金) 13:37:32 JST


こんにちわ、桝形です。

> grepとstrposの比較をするため
> 文字列から「あ」という文字を検索する
> プログラムを作成しました。
> 
> しかしながら同じと思われた検索結果が
> 微妙に違っています。
> 
> 原因は、どこにあるのでしょうか?

以下のプログラムを、そのまま利用して確認してみましたが
特に問題は無いようでした(全て同じ件数が出力された)。

Debian GNU/Linux 3.1
PHP / 4.4.4 5.2.0

データファイルの構成がどうなっているか分かりませんが
プログラムが実行している文字コードとファイルの文字コードが
一致していない、という事はありませんか。

mb_internal_encoding = EUC-JP
ファイルの文字コード = SJIS

みたいな。

再現できる、データファイルの構成を教えて頂ければ幸いです。

> 
> <?php
> 
> // Linuxのgrepコマンド
> $result_grep = array();
> exec("grep 'あ' strdata.dat", $result_grep);
> echo count($result_grep) . "\n";
> 
> // PHPのstrposコマンド
> $result_strpos = array();
> $arr = file("strdata.dat");
> for ($i=0; $i<count($arr); $i++) {
> 	if (strpos($arr[$i], "あ") !== false) {
> 		$result_strpos[] = $arr[$i];
> 	}
> }
> echo count($result_strpos) . "\n";
> 
> // PHPのstrposコマンド
> $result_strpos = array();
> $arr = file("strdata.dat");
> for ($i=0; $i<count($arr); $i++) {
> 	if (mb_strpos($arr[$i], "あ") !== false) {
> 		$result_strpos[] = $arr[$i];
> 	}
> }
> echo count($result_strpos) . "\n";
> 
> ?>

-- 
Seiji Masugata <s.masugata @ digicom.dnp.co.jp>



PHP-users メーリングリストの案内