preg_replace - ecshop在php5.6下的錯誤。

來源:互聯網
上載者:User
關鍵字 php ecshop preg_replace preg_replace_callback
ecshop在php5.6下的錯誤。在5.3下是正常的。應該是PHP高版本函數變化了。

錯誤提示:

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/wwwroot/www.ufeelwine.com/includes/cls_template.php on line 1061

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/wwwroot/www.ufeelwine.com/includes/cls_template.php on line 483

具體網頁地址:
http://www.ufeelwine.com/supplier.php?suppId=7

第483行:

                    $out = "_echash . $k[\'name\'] . \'|\' . serialize($k) . $this->_echash;' . "\n?>";

第1061行:

            $pattern     = '/.*?/se';            $replacement = "'{include file='.strtolower('\\1'). '}'";            $source      = preg_replace($pattern, $replacement, $source);

應該怎麼改寫呢?

回複內容:

ecshop在php5.6下的錯誤。在5.3下是正常的。應該是PHP高版本函數變化了。

錯誤提示:

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/wwwroot/www.ufeelwine.com/includes/cls_template.php on line 1061

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/wwwroot/www.ufeelwine.com/includes/cls_template.php on line 483

具體網頁地址:
http://www.ufeelwine.com/supplier.php?suppId=7

第483行:

                    $out = "_echash . $k[\'name\'] . \'|\' . serialize($k) . $this->_echash;' . "\n?>";

第1061行:

            $pattern     = '/.*?/se';            $replacement = "'{include file='.strtolower('\\1'). '}'";            $source      = preg_replace($pattern, $replacement, $source);

應該怎麼改寫呢?

//-- 原本

return preg_replace("/{([^\}\{\n]*)}/e", "\$this->select('\\1');", $source);

//-- 修改成

return preg_replace_callback("/{([^\}\{\n]*)}/", function($r) { return $this->select($r[1]); }, $source);

//-- 原本

$val = preg_replace("/\[([^\[\]]*)\]/eis", "'.'.str_replace('$','\$','\\1')", $val);

//-- 修改成

$val = preg_replace_callback("/\[([^\[\]]*)\]/is", function($r) { return '.'.$r[1]; }, $val);

//-- 原本

$out = "

//-- 修改成

$out = "

//--- 原本

$pattern = '/.*?/se';$replacement = "'{include file='.strtolower('\\1'). '}'";$source = preg_replace($pattern, $replacement, $source);

//--- 修改成

$pattern = '/.*?/s';$replacement = function ($r) { return '{include file='.strtolower($r[1]). '}'; };$source = preg_replace_callback($pattern, $replacement, $source);

試試,沒有環境沒辦法測試,根據提示資訊改的

第483行:改成

$out = "

第1061行:改成

//$pattern = '/.*?/se';//$replacement = "'{include file='.strtolower('\\1'). '}'";$source = preg_replace('/.*?/se', function($r) { return '{include file='.strtolower('\\1'). '}';}, $source);

提示很清楚了啊
把preg_replace換成preg_replace_callback
看看preg_replace_callback的用法就明白了

/*1、e參數去掉2、後面的\1換成回調的數組對應的元素*///483行$out = "
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.