preg_replace()替换成preg_replace_callback() php5.5之后
来源:互联网 发布:阿里云dns解析故障 编辑:程序博客网 时间:2024/06/01 23:12
由于php5.5之后,/e修饰符被丢弃。
$str = preg_replace("/<\?php([^\?]+)\?>/es", "template_addquote('<?php\\1?>')", $str);
改成
$str = preg_replace_callback("/<\?php([^\?]+)\?>/", function($r) { return template_addquote("<?php$r[1]?>");}, $str);
改成
$str = preg_replace_callback("/<\?php([^\?]+)\?>/", function($r) { return template_addquote("<?php$r[1]?>");}, $str);
$template = preg_replace("/\<\?php echo \<\?php echo $var_regexp; \?\>; \?\>/es", "addquote('<?php echo \\1; ?>')", $template);
改成
$template = preg_replace_callback("/\<\?php echo \<\?php echo $var_regexp; \?\>; \?\>/s", function($r){ return addquote("<?php echo $r[1]; ?>");}, $template);
修饰符/e /s说明
e (PREG_REPLACE_EVAL)
如果这个修饰符设置了, preg_replace()在进行了对替换字符串的 后向引用替换之后, 将替换后的字符串作为php代码评估执行(eval函数方式), 并使用执行结果 作为实际参与替换的字符串. 单引号, 双引号, 反斜线(\)和NULL字符在 后向引用替换时会被用反斜线转义.
s (PCRE_DOTALL)
如果设置了这个修饰符, 模式中的点号元字符匹配所有字符, 包含换行符. 如果没有这个 修饰符, 点号不匹配换行符. 这个修饰符等同于perl中的/s修饰符. 一个取反字符类比如 [^a]总是匹配换行符, 而不依赖于这个修饰符的设置.
修饰符/e /s说明
e (PREG_REPLACE_EVAL)
如果这个修饰符设置了, preg_replace()在进行了对替换字符串的 后向引用替换之后, 将替换后的字符串作为php代码评估执行(eval函数方式), 并使用执行结果 作为实际参与替换的字符串. 单引号, 双引号, 反斜线(\)和NULL字符在 后向引用替换时会被用反斜线转义.
s (PCRE_DOTALL)
如果设置了这个修饰符, 模式中的点号元字符匹配所有字符, 包含换行符. 如果没有这个 修饰符, 点号不匹配换行符. 这个修饰符等同于perl中的/s修饰符. 一个取反字符类比如 [^a]总是匹配换行符, 而不依赖于这个修饰符的设置.
阅读全文
0 0
- preg_replace()替换成preg_replace_callback() php5.5之后
- smarty如何完美兼容php5.5和preg_replace_callback如何替换preg_replace
- smarty如何完美兼容php5.5+和preg_replace_callback如何替换preg_replace
- PHP正则替换函数preg_replace和preg_replace_callback使用总结
- ecshop中preg_replace替换为preg_replace_callback需要注意的事项
- PHP正则替换函数preg_replace和preg_replace_callback使用总结
- preg_replace()和preg_replace_callback
- PHP正则替换preg_replace
- preg_replace 数组替换
- preg_replace_callback
- preg_replace替换内容中间部分
- deprecated preg_replace the e modifier is deprecated use preg_replace_callback instead in
- Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in ...
- ecshop在php5.5+报preg_replace/e错误的几处改动
- PHP5.2下preg_replace函数的问题
- PHP字符串正则替换函数preg_replace
- preg_replace统一替换图片的title
- php 使用 preg_replace 一次替换多个值
- 实验三 Linux文件管理
- 类文件结构
- 解决/usr/bin/python\r\n^M: bad interpreter: No such file or directory
- Rhyme/Linux /etc/fstab 配置文件解释
- WeakReference
- preg_replace()替换成preg_replace_callback() php5.5之后
- fastjson在使用hibernate关系模型转json出现$ref解决办法
- ResourceBundle missingresourceexception
- fastjson序列化hibernate查询的数据报错:failed to lazily initialize a collection of role
- 10 个快速提升技术水平的方法
- Eclipse配置多域名启动项目详细步骤
- C读书笔记
- [shell]curl结果获取http header的问题
- 171024-对do-while,while,for语句的复习