サポート

Deprecated: preg_replace():について

タキ (2016/01/20 17:03)

設置URL : http://www

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/u*********/public_html/libs/smarty/Smarty_Compiler.class.php on line 270

サーバーはHostingerジャパンです。
mod_rewrite対応をtrueにすると初見のサイトページ先が
いつもこのDeprecated: preg_replace():が出てくる。

ちなみに.htaccessにはこれがないとmod_rewrite対応できないみたいです。
DirectoryIndex index.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?pathinfo=$1&%{QUERY_STRING}
</IfModule>

自分から捜索すると
他の方の対策方法は

return preg_replace("/{([^\}\{\n]*)}/e", "\$this->select('\\1');", $source);から
return preg_replace_callback("/{([^\}\{\n]*)}/", function($r) { return $this->select($r[1]); }, $source);
に変更すると解決です。

ですか、freoのCompiler.class.phpの270行では
/* replace special blocks by "{php}" */
$source_content = preg_replace($search.'e', "'"
. $this->_quote_replace($this->left_delimiter) . 'php'
. "' . str_repeat(\"\n\", substr_count('\\0', \"\n\")) .'"
. $this->_quote_replace($this->right_delimiter)
. "'"
, $source_content);
どうやって改善するのは全くわからない。
皆さん、対応策があるかな?
どうか、お助けください

返信

  • この記事に返信します。
  • 返信の際は、設置URL以外の項目は入力必須です。
投稿フォーム
名前
設置URL
本文(本文の装飾について
編集キー(投稿した記事を編集する際に使用します。)
投稿キー(スパム対策に、投稿キー を半角で入力してください。)