前提・実現したいこと
この個所のeregiからpreg_matchへの書き換えで不具合が出ないようにしたい。
発生している問題・エラーメッセージ
当該スクリプトはアクセス解析ですが、 書き換え前であれば日付を跨いでトラッキングできていたユーザー追跡が、 書き換え後は一日分しか抽出されなくなります。 5.6から7.3にバージョンアップしても明示的なエラー表示はありませんが、 ユーザー追跡時の挙動に上記の問題が発生してしまいます。
該当のソースコード
PHP
1 2 $retval = FALSE; 3 if(is_array($arr)){ 4 foreach($arr as $v){ 5 if(eregi(trim($v), trim($str))){ 6 $retval = TRUE; 7 break; 8 } 9 } 10 } 11 return $retval;
試したこと
見よう見まねで以下のように書き換えましたが、ユーザー追跡がうまくいかなくなります。
PHP
1 $retval = FALSE; 2 if(is_array($arr)){ 3 foreach($arr as $v){ 4 if(preg_match("/trim($v)/i", trim($str))){ 5 $retval = TRUE; 6 break; 7 } 8 } 9 } 10 return $retval;
補足情報(FW/ツールのバージョンなど)
レンタルサーバーのphpを5.6から7.3へバージョンアップさせるため、
とっくに配布・更新が止まっているアクセス解析を見よう見まねで対応させようとしています。
スクリプト内の他のeregやeregiは何とか書き換えて7.3でも正常稼働できるのですが、
上記の個所を書き換えると、アクセス解析が正常稼働しません。
書き換え前に調べた結果、eregやeregiからpregへの書き換えは正規表現であることが前提になっており、
上記以外の記述はすべて""でくくられていたのでわかりやすく、機械的に書き換えることができました。
しかし、今回のように""でくくられてない場合、どうすれば良いのかがわかりませんでした。
10年以上使い続けているアクセス解析なので引き続き使い続けたいと思っているのですが、
どこが間違っているのかをうかがえないでしょうか。
どなたかご存じの方いらっしゃいましたら、何とぞよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー