2015-10-17 33 views
2

我是OpenCart 2.1的新手,作爲嘗試安裝新主題的一部分,我遇到了遷移到PHP 5.5的問題。我正的錯誤是:替換reg_replace與reg_replace_callback在php

未知:的preg_replace():本/ e修飾符已過時,使用 preg_replace_callback相反在 /應用程序/ MAMP/htdocs中/項目/ phpproject1 /上傳/管理/控制/模塊/ tg_themegloballite_settings.php 在線442警告:無法修改標題信息 - 已 通過發送的報頭(輸出開始 /Applications/MAMP/htdocs/projects/phpproject1/upload/admin/index.php:80) /Applications/MAN/htdocs/projects/phpproject1/upload/system/library/response.php on line 12

我相信錯誤是文件tg_themegloballite_settings.php內上線442(在下面的框某處):

  function mb_unserialize($serial_str) { 
       $out = preg_replace('!s:(\d+):"(.*?)";!se', 
      "'s:'.strlen('$2').':\"$2\";'", $serial_str); 
       return unserialize($out); 
      } 

我一直在努力,現在修復了一段時間,但似乎無法得到它的工作,所以任何援助將不勝感激。

回答

0

這是一個警告,因爲在preg_replace功能e修改折舊(見http://php.net/manual/en/migration55.deprecated.php

使用preg_replace_callback等效替換爲:

<?php 

function mb_unserialize($serial_str) { 
    $out = preg_replace_callback(
     '!s:(\d+):"(.*?)";!s', 
     function ($matches) { 
      return 's:' . strlen($matches[2]) . ':\"' . $matches[2] . '\";'; 
     }, 
     $serial_str); 
    return unserialize($out); 
} 

echo "Function test: " . mb_unserialize('s:7:"my test"') . "\n"; 

參考文獻: http://php.net/manual/en/function.preg-replace-callback.php