preg_replace的/e模式在php高版本下如php7中会抛出以下警告:Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in E:\wwwroot\e.php on line 9,意思是说/e修饰符已经不再支持,请使用preg_replace_callback代替。
现在我们通过以下3个不同场景的示例来学习preg_replace_callback代替preg_replace:
示例0:
<?php header("content-type:text/html;charset=utf-8"); /** * 示例0 * by 代潇瑞博客 */ $subject = '系统当前时间:1499702400,一小时后:1499706000'; $str = preg_replace('/(\d+)/e', 'date("Y-m-d H:i:s", $1)', $subject); echo $str.PHP_EOL.'<br/>'; //运行结果为:系统当前时间:2017-07-11 00:00:00,一小时后:2017-07-11 01:00:00 /* * 改为preg_replace_callback的形式 */ $str = preg_replace_callback('/(\d+)/', function($match){ return date("Y-m-d H:i:s", $match[1]); }, $subject); echo $str.PHP_EOL.'<br/>';
示例1:
<?php header("content-type:text/html;charset=utf-8"); /* * 示例1 * by 代潇瑞博客 */ $subject = '<p>4+5=${4+5}</p>'; $str = preg_replace('/\$\{(.+)\}/e', '$1', $subject); echo $str.PHP_EOL.'<br/>'; //运行结果为:<p>4+5=9</p>,因为'$1'中匹配出来的是'4+5'当做php表达式执行了。 /* * 改为preg_replace_callback的形式 */ $str = preg_replace_callback('/\$\{(.+)\}/', function($match){ eval('$a = '.$match[1].';'); return $a; }, $subject); echo $str.PHP_EOL.'<br/>';
示例2:
<?php header("content-type:text/html;charset=utf-8"); /* * 示例2 * by 代潇瑞博客 * 保留n位小数 */ $precision = 2; $subject = '看完《php从入门到精通》需要33.123456小时'; $str = preg_replace('/([\d|\.]+)/e', 'round($1, '.$precision.')', $subject); echo $str.PHP_EOL.'<br/>'; //运行结果为:看完《php从入门到精通》需要33.12小时。即:33.123456被替换为round(33.123456, $precision)。 /* * 改为preg_replace_callback的形式 */ $str = preg_replace_callback('/([\d|\.]+)/', function($match) use($precision){ return round($match[1], $precision); }, $subject); echo $str.PHP_EOL.'<br/>'; //注:这里的关键点是use,function(...) use (...){} 属于闭包语法,读者可以查询相关资料了解更多。
通过这3个例子的学习,相信以后遇到任何形式的基本上都没有问题了。
文章出自:https://www.daixiaorui.com/read/253.html 本站所有文章,除注明出处外皆为原创,转载请注明本文地址,版权所有。
蛋仔派对无限蛋币http://www.wzryzs.com/
666
666
很好的方法值得推荐
gg修改器https://www.guiyangtax.com/ 葫芦侠http://www.booj.net/ 八门神器http://www.tusovok.net/
gg修改器https://www.guiyangtax.com/ 葫芦侠http://www.booj.net/ 八门神器http://www.tusovok.net/