browser icon
You are using an insecure version of your web browser. Please update your browser!
Using an outdated browser makes your computer unsafe. For a safer, faster, more enjoyable user experience, please update your browser today or try a newer browser.

Xoops piCal

Posted by on 2011年3月8日
このエントリーを Google ブックマーク に追加
[`buzzurl` not found]
[`yahoo` not found]
LinkedIn にシェア
GREE にシェア
LINEで送る

Xoops を使っている自サイトで、カレンダー機能のpiCalが動かなくなっているのに、
気が付きました。ga-n01.gif

PHP5.3環境に移したときは、php.iniを触ってdeprecatedエラーを封じ込めたのですが…
5.3.5にバージョンアップしたころに動かなくなったのかもしれません。

面倒くさいから、最新バージョンないかと思って、製造元サイトを見てみますと、
更新はされていないようで...探し方悪いのかな? ま、それはさておき。

piCal の includes にある、patTemplate.phpにおいて、462行目あたりと504行目あたりで、

変更前
if      ( eregi( “<patTemplate:([[:alnum:]]+)[[:space:]]*(.*)>”, $line, $regs ) )

elseif  ( eregi( “</patTemplate:([[:alnum:]]+)>”, $line, $regs ) )

変更後
if      ( preg_match( “/<patTemplate:([[:alnum:]]+)[[:space:]]*(.*)>/i“, $line, $regs )

elseif  ( preg_match( “/<\/patTemplate:([[:alnum:]]+)>/i“, $line, $regs ) )

赤文字が変更・追加分です。

piCal の class にある piCal.phpにおいて、

変更前
if( ! ( ereg( “^([0-9][0-9]+)[-./]?([0-1]?[0-9])[-./]?([0-3]?[0-9])$” , $setdate , $regs )
他にも似たようなところ全6箇所ほどあります。

変更後
if( ! ( preg_match( “/^([0-9][0-9]+)[-.\/]?([0-1]?[0-9])[-.\/]?([0-3]?[0-9])$/” , $setdate , $regs )

参考にしたサイト
http://devthought.com/2009/06/09/fix-ereg-is-deprecated-errors-in-php-53/

要は、egrep(“”,$hoge,$fuga) なら、preg_match(“//”,$hoge,$fuga) とスラッシュをいれること、
egrepi(“”,$hoge,$fuga)なら、preg_match(“//i”,$hoge,$fuga)と、スラッシュの後に i を入れること、
のようですね。
あとお約束ですが、スラッシュ間にスラッシュを使っている場合は、ちゃんとエスケープすることです。

これで動作することを確認できました。ヤレヤレ。wink02.gif
それにしても、5.2系と5.3系で仕様が変わって動作しなくなったりするところが、
PHPを覚えようという気にはなれないところです。
4系と5系とでも仕様が違うしなぁ。
まぁ、進化とはそういうところもあるのかもしれませんが...aicon364.gif

このエントリーを Google ブックマーク に追加
[`buzzurl` not found]
[`yahoo` not found]
LinkedIn にシェア
GREE にシェア
LINEで送る

Comments are closed.