因为php5.5版本废弃了preg_replace的/e模式,建议替换preg_replace_callback函数。但是问题来了,对于下段代码不知该怎么写了,这是个模板类变量替换的代码。
/*转意对正则表达式有影响的字符,例如:<{}>转义\<\{\}\>*/ $left=preg_quote($this->delimiter_left); $right=preg_quote($this->delimiter_right); $pattern=array( /*1.替换模板中的变量*/ '/'.$left.'\s*\$([a-za-z0-9_]*)\s*'.$right.'/i', /*2.匹配模板中的if*/ '/'.$left.'\s*if\s*(.+?)\s*'.$right.'(.+?)'.$left.'\s*\/if\s*'.$right.'/is' ); $replacement=array( /*1.替换模板中的普通变量*/ '<?php echo $this->tpl_vars["${1}"];?>', /*2.替换模板中的if字符串*/ '这是if字段', ); /*开始替换模板文件中的标签*/ $this->template_html=preg_replace($pattern,$replacement,$this->template_html); return $this->template_html;
你没有使用 e模式,所以不需要改写
你没有使用 e模式,所以不需要改写
$pattern=array(
/*1.替换模板中的变量*/
'/'.$Left.'\s*\$([A-Za-z0-9_]*)\s*'.$Right.'/i',
/*2.匹配模板中的if*/
'/'.$Left.'\s*if\s*(.+?)\s*'.$Right.'(.+?)'.$Left.'\s*\/if\s*'.$Right.'/is'
);
那条使用了 e 模式?
你应该给出原始的代码,而不是你修改过的代码!
$pattern=array(
/*1.替换模板中的变量*/
'/'.$Left.'\s*\$([A-Za-z0-9_]*)\s*'.$Right.'/i',
/*2.匹配模板中的if*/
'/'.$Left.'\s*if\s*(.+?)\s*'.$Right.'(.+?)'.$Left.'\s*\/if\s*'.$Right.'/is'
);
那条使用了 e 模式?
你应该给出原始的代码,而不是你修改过的代码!
/*转意对正则表达式有影响的字符,例如:<{}>转义\<\{\}\>*/$Left=preg_quote($this->Delimiter_Left);$Right=preg_quote($this->Delimiter_Right);$pattern=array( /*1.替换模板中的变量*/ '/'.$Left.'\s*\$([A-Za-z0-9_]*)\s*'.$Right.'/i', /*2.匹配模板中的if*/ '/'.$Left.'\s*if\s*(.+?)\s*'.$Right.'(.+?)'.$Left.'\s*\/if\s*'.$Right.'/ies');$replacement=array( /*1.替换模板中的普通变量*/ '<?php echo $this->tpl_Vars["${1}"];?>', /*2.替换模板中的if字符串*/ '这是IF字段',);/*开始替换模板文件中的标签*/$this->Template_HTML=preg_replace($pattern,$replacement,$this->Template_HTML);return $this->Template_HTML; Public Function tpl_Replace(){ /*转意对正则表达式有影响的字符,例如:<{}>转义\<\{\}\>*/ $Left=preg_quote($this->Delimiter_Left); $Right=preg_quote($this->Delimiter_Right); $pattern=array( /*1.替换模板中的变量*/ '/'.$Left.'\s*\$([A-Za-z0-9_]*)\s*'.$Right.'/i', /*2.匹配模板中的if*/ '/'.$Left.'\s*if\s*(.+?)\s*'.$Right.'(.+?)'.$Left.'\s*\/if\s*'.$Right.'/is' ); $replacement=array( /*1.替换模板中的普通变量*/ '<?php echo $this->tpl_Vars["${1}"];?>', /*2.替换模板中的if字符串*/ '这是IF字段', ); /*开始替换模板文件中的标签*/ //$this->Template_HTML=preg_replace($pattern,$replacement,$this->Template_HTML); $this->Template_HTML=preg_replace_callback($pattern,function($matches){ /*1.替换模板中的普通变量*/ $replacement=$this->tpl_Vars[$matches[1]]; return $replacement; },$this->Template_HTML); return $this->Template_HTML; } Public Function callback($matches){ $replacement=$this->tpl_Vars[$matches[1]]; return $replacement; }
$pattern=array(
/*1.替换模板中的变量*/
'/'.$Left.'\s*\$([A-Za-z0-9_]*)\s*'.$Right.'/i',
/*2.匹配模板中的if*/
'/'.$Left.'\s*if\s*(.+?)\s*'.$Right.'(.+?)'.$Left.'\s*\/if\s*'.$Right.'/ies'
);
那条使用了 e 模式?
你应该给出原始的代码,而不是你修改过的代码!
/*转意对正则表达式有影响的字符,例如:<{}>转义\<\{\}\>*/$Left=preg_quote($this->Delimiter_Left);$Right=preg_quote($this->Delimiter_Right);$pattern=array( /*1.替换模板中的变量*/ '/'.$Left.'\s*\$([A-Za-z0-9_]*)\s*'.$Right.'/i', /*2.匹配模板中的if*/ '/'.$Left.'\s*if\s*(.+?)\s*'.$Right.'(.+?)'.$Left.'\s*\/if\s*'.$Right.'/is');$replacement=array( /*1.替换模板中的普通变量*/ '<?php echo $this->tpl_Vars["${1}"];?>', /*2.替换模板中的if字符串*/ '$this->stripvtags(\'<?php if(${1}) { ?>\',\'${2}<?php } ?>\')',);/*开始替换模板文件中的标签*/$this->Template_HTML=preg_replace($pattern,$replacement,$this->Template_HTML);return $this->Template_HTML;
/*转意对正则表达式有影响的字符,例如:<{}>转义\<\{\}\>*/$Left=preg_quote($this->Delimiter_Left);$Right=preg_quote($this->Delimiter_Right);$pattern=array( /*1.替换模板中的变量*/ '/'.$Left.'\s*\$([A-Za-z0-9_]*)\s*'.$Right.'/i', /*2.匹配模板中的if*/ '/'.$Left.'\s*if\s*(.+?)\s*'.$Right.'(.+?)'.$Left.'\s*\/if\s*'.$Right.'/ies');$replacement=array( /*1.替换模板中的普通变量*/ '<?php echo $this->tpl_Vars["${1}"];?>', /*2.替换模板中的if字符串*/ '$this->stripvtags(\'<?php if(${1}) { ?>\',\'${2}<?php } ?>\')',);/*开始替换模板文件中的标签*/$this->Template_HTML=preg_replace($pattern,$replacement,$this->Template_HTML);return $this->Template_HTML;
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
C++高性能并发应用_C++如何开发性能关键应用
Java AI集成Deep Java Library_Java怎么集成AI模型部署
Golang后端API开发_Golang如何高效开发后端和API
Python异步并发改进_Python异步编程有哪些新改进
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全
Java GraalVM原生镜像构建_Java怎么用GraalVM构建高效原生镜像
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
C++现代C++20/23/26特性_现代C++有哪些新标准特性如modules和coroutines
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号