我得到了以下错误
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in C:\xampp\htdocs\suitecrm\include\Smarty\Smarty_Compiler.class.php on line 268
我更改了PHP.ini文件以停止显示已弃用的错误,但它仍显示
error_reporting=E_ALL & ~E_DEPRECATED & ~E_STRICT
我也改变了Smarty_Compiler.class中的行
$source_content = preg_replace_callback($search, create_function ('$matches', "return '"
. $this->_quote_replace($this->left_delimiter) . 'php'
. "' . str_repeat(\"\n\", substr_count('\$matches[1]', \"\n\")) .'"
. $this->_quote_replace($this->right_delimiter)
. "';")
, $source_content);
但它不起作用..
请告知
答案 0 :(得分:0)
I found that似乎有效:
将第262行的行替换为:
/* replace special blocks by "{php}" */
$source_content = preg_replace_callback($search,
function($m) {
return "{php ".str_repeat("\n", substr_count($m[0], "\n"))."}";
},
$source_content);
答案 1 :(得分:0)
我已经通过替换include / Smarty / Smarty_Compiler.class.php 文件中的代码解决了这个问题。我用下面提到的代码替换了从262到268的行号代码。之后删除缓存文件夹中的所有文件并重新加载页面。这个问题将得到解决。
/* replace special blocks by "{php}" */
$source_content = preg_replace_callback($search, create_function ('$matches', "return '"
. $this->_quote_replace($this->left_delimiter) . 'php'
. "' . str_repeat(\"\n\", substr_count('\$matches[1]', \"\n\")) .'"
. $this->_quote_replace($this->right_delimiter)
. "';")
, $source_content);
答案 2 :(得分:0)
我的解决方案:
$source_content = preg_replace_callback($search,
function($m) {
return $this->_quote_replace($this->left_delimiter) .
"php ".str_repeat("\n", substr_count($m[0], "\n")) .
$this->_quote_replace($this->right_delimiter);
},
$source_content);