[PHP-users 23007]Re: mb系使えない環境で全角 ー を含めた文字列の検索

PHPユーザー php_user_desu @ yahoo.co.jp
2004年 8月 18日 (水) 14:09:58 JST


こんにちわ。

> mb_split その他 mb系があまり使えない環境で全角 ー を含めた文字列の検索をしたいのですが、
> 
> 検索対象の文字列をキーワードで分割し、
> 配列の個数が2個以上をマッチしたとして、
> 出現回数の多い順にソートして検索結果も出したい事もあり、
> 以下の記述試しました。
> 
> $k='キーワード;
> $fp='検索文字列';
> $sf=split($k,$fp);
> $hl=count($sf);
> if($hl>1){
> 	処理
> }

この場合、検索文字列に何が入るのか予想がつかないので、それを関数
split()の引数に直接持っていくのは駄目ではないかと思います。もしど
うしてもsplit()を使いたいのであれば、preg_quote()なんて関数があり
ます。

ただ、既に他の方から回答がある通り、split()は正規表現を使って文字
列を分割しますので、正規表現を使用しない場合はexplode()の使用が推
奨されてますし、正規表現を使用する場合でもpreg_split()の方が一般的
に高速であると言われていたと思います。

更に、上記のコードはパっと見でえらく遠回りな事をしている様に見えま
した。何か理由があっての事でないのなら、↓の様に書いた方が簡潔で処
理速度も早いと思います。

if (strstr($k, $fp)) {	// stristr()だと大文字小文字の区別なし
    〜 処理 〜
}


--
php_user_desu @ yahoo.co.jp

__________________________________________________
GANBARE! NIPPON!
Yahoo! JAPAN JOC OFFICIAL INTERNET PORTAL SITE
http://mail.ganbare-nippon.yahoo.co.jp/



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