关于thinkhphp3.1中废弃 preg_replace /e 修饰符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于thinkhphp3.1中废弃 preg_replace /e 修饰符相关的知识,希望对你有一定的参考价值。

警告:preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead 

 

网上查了下 发现 php5.5版本以上 就废弃了  preg_replace   函数中 /e 这个修饰符

/e 这个修饰符的意思 就是让 正则替换的 时候 替换规则 支持 php 代码 

 

解决方案:只要 把 preg_replace 里面 有 /e 修饰符的代码 修改成  preg_replace _callback  然后重新写下就好了 

 

最简单的 写法:

preg_replace("/([A-Z])/e", "\'_\' . strtolower(\'\\\\1\')", $str) 

修改成

preg_replace("/([A-Z])/",\'gwyy\', $str);  //在类中时写成:[\'gwyy\'] 替换成 array($this,\'gwyy\')

function gwyy($match) {  

  return  \'_\'.strtolower($match[1]);  

}  

preg_replace_callback(\'/([A-Z])/\',  function ($matches) { 

   return \'_\' . strtolower($matches[0]);  

 },  $str)  

 

使用了 类里面的自定义方法:

$that = $this;   //这里 用 $that  代替 $this;  

$patterns       = \'/\'.$begin.$parseTag.$n1.\'\\/(\\s*?)\'.$end.\'/is\';  

$content=preg_replace_callback($patterns, function($matches) use($tagLib,$tag,$that){

  return $that->parseXmlTag($tagLib, $tag, $matches[1], \'\'); 

 }, $content);  

 

以上是关于关于thinkhphp3.1中废弃 preg_replace /e 修饰符的主要内容,如果未能解决你的问题,请参考以下文章

关于小程序opensetting废弃后地理位置的二次授权

Day724. 如何改进代码废弃 -Java8后最重要新特性

关于jquery的on,你怎么绑定就怎么解除

记一次关于垃圾回收app的推广成功案例

关于数据模板

如何在具有不同内容的网站中废弃容器?