我需要帮助将preg_replace转换为preg_replace_callback。
PHP 5.4及以上版本触发以下声明:
The /e modifier is deprecated, use preg_replace_callback instead in
我尝试过改变:
if (stripos ( $tpl->copy_template, "[category=" ) !== false) {
$tpl->copy_template = preg_replace ( "#\\[category=(.+?)\\](.*?)\[/category\\]#ies", "check_category('\\1', '\\2', '{$category_id}')", $tpl->copy_template );
}
到
if (stripos ( $tpl->copy_template, "[category=" ) !== false) {
$tpl->copy_template = preg_replace_callback ( "#\\[category=(.+?)\\](.*?)\\[/category\\]#isu",
function($cat){
return check_category($cat['1'], $cat['2'], $category_id);
}
, $tpl->copy_template );
}
回报为空
答案 0 :(得分:2)
由于$category_id
是全局变量,因此您必须在具有global
关键字的函数内使用它。并且数值数组的键是整数而不是字符串;所以你必须写$cat[1]
而不是$cat['1']
和$cat[2]
而不是$cat['2']
。
通过这些微小的改动,你的功能变为:
function($cat){
global $category_id;
return check_category($cat[1], $cat[2], $category_id);
}