[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 メーリングリストの案内