$result = preg_replace(
"/\{([<>])([a-zA-Z0-9_]*)(\?{0,1})([a-zA-Z0-9_]*)\}(.*)\{\\1\/\\2\}/iseU",
"CallFunction('\\1','\\2','\\3','\\4','\\5')",
$result
);
上記のコードは、PHP 5.5へのアップグレード後に非推奨の警告を出します。
非推奨:preg_replace():/ e修飾子は非推奨です。代わりにpreg_replace_callbackを使用してください
コードをpreg_replace_callback()
に置き換えるにはどうすればよいですか?
匿名関数 を使用して、一致を関数に渡すことができます。
$result = preg_replace_callback(
"/\{([<>])([a-zA-Z0-9_]*)(\?{0,1})([a-zA-Z0-9_]*)\}(.*)\{\\1\/\\2\}/isU",
function($m) { return CallFunction($m[1], $m[2], $m[3], $m[4], $m[5]); },
$result
);
より高速であることに加えて、これは文字列内の二重引用符も適切に処理します。 /e
を使用する現在のコードは、二重引用符"
を\"
に変換します。