eregの速度を100とするとpreg_matchは20、strposは10で同等の処理が完了する体感速度。それだけ違う。以前はpreg_matchを使用していたがstrposに変えた。
そんな文章検索。そんなサイト内。…とは言え今までの書き方だと一部の文字列を検索した時にバグが発生していたので以下の様な書き方に変えた。
変更前:ログファイルを置換する為のarrayに代入した配列を、検索文字列を処理する為に代入するarrayと、その両arrayをarray_mergeしてからstrtrでarrayを置換した。
変更後:ログファイルを置換する行為はstr_replaceに任せ、置換後、検索文字列を処理する為に代入するarrayにファイルポインタを引き継いでstrtrでarrayを置換した。
変更前が「一気の置換」なのに対して、変更後は「まずログファイルで不必要なタグだとかあるいは検索文字列以外の置換すべき箇所を先に置換してから文字列抽出」
と言うやり方に変更した。これで一部の文字列を検索して以前はバグ的出力だった内容も正常に出力される様になった訳ですが。これで快適性がアップした。