php报preg_phppreg replacee(): Unknown modifier 'p'怎么解决?

PHP正则的Unknown Modifier错误解决方法
PHP正则时出现Unknown Modifier错误解决方法
如下正则:
$a='2&span&&nobr&tóng&span class="h"&dòng&/span&&/nobr&&br&垌&/span&3';
echo preg_replace('/&span class="h"&[^&]*?&/span&/','',$a);
Warning: preg_replace(): Unknown modifier 'p' in E:\phpLearn\test.php on line 12
在正则模式中,用/做定界符,但正则中也含有/,因此会出现此错误,PHP误当后面的一个&/span&中的斜杠是结束的定界符。
解决办法:
1、加一个转义符:
echo preg_replace('/&span class="h"&[^&]*?&\/span&/','',$a);
2、改其它定界符:如
echo preg_replace('{&span class="h"&[^&]*?&/span&}','',$a);
Copyright (C) , All Rights Reserved.
版权所有 闽ICP备号
processed in 0.036 (s). 12 q(s)php - regex error preg_replace_callback() : Unknown modifier '.' in - Stack Overflow
Join Stack Overflow to learn, share knowledge, and build your career.
or sign in with
I got the following string:
last_name, first_name
bjorge, philip
kardashian, [kghim]
mer#$##Code:menu:51587daa7030e##$#cury some more
data #$##Code:menu:515r4387daa7dsf030e##$#, freddie
im trying to replace the Codes in the middle with the function: 'codeParser' the regex is:
$PC_File = preg_replace_callback("(?=\#\$\#\#).*?(?&=\#\#\$\#)", 'codeParser', $PC_File);
but getting this error:
PHP Warning:
preg_replace_callback() : Unknown modifier '.'
You need to wrap your regular expression in .
It's considering () to be the delimiters right now, and the . as a modifier (which is of course invalid).
"/(?=#\\$##).*?(?&=##\\$#)/"
(I'm also pretty sure the # do not need to be escaped unless you were using them as delimiters)
EDIT: You need \\ to properly escape the $ in double-quotes.
135k32194266
Your Answer
Sign up or
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Post as a guest
By posting your answer, you agree to the
Not the answer you're looking for?
Browse other questions tagged
Stack Overflow works best with JavaScript enabledECSHOP完美解决Deprecated: preg_replace()报错的问题
投稿:jingxian
字体:[ ] 类型:转载 时间:
下面小编就为大家带来一篇ECSHOP完美解决Deprecated: preg_replace()报错的问题。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
随着PHP5.5 的普及,ECSHOP系统又爆出了新的错误。PHP发展到PHP5.5版本以后,有了很多细微的变化。而ECSHOP官方更新又太慢,发现这些问题后也不及时升级,导致用户安装使用过程中错误百出。说了半天,这个新错误到底是什么呢,它的完整错误提示信息是这样的:
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in.......
注意:不是所有人的ECSHOP都会报这个错误,只有使用PHP5.5环境的ECSHOP才会报这个错误。
下面ecshop开发中心()教程先来说一下错误产生的原因:
1)、错误原因:
preg_replace() 函数中用到的修饰符 /e 在 PHP5.5.x 中已经被弃用了。
如果你的PHP版本恰好是PHP5.5.X,那你的ECSHOP肯定就会报类似下面这样的错误:
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in......
2)、解决办法:
其实从刚才的错误提示信息中我们也能看出一二,它提示我们使用 preg_replace_callback 来代替 preg_replace。
所以解决方法如下:
使用记事本或其他PHP编辑软件(如:editplus)打开文件 includes/cls_template.php ,找到
return preg_replace("/{([^\}\{\n]*)}/e", "\$this-&select('\\1');", $source);
return preg_replace_callback("/{([^\}\{\n]*)}/", function($r) { return $this-&select($r[1]); }, $source);
问题解决。
3)、如果你的ECSHOP中其他文件也报类似的 preg_replace错误,请参照上面方法解决之,解决思路和解决方法是一样的。
以上这篇ECSHOP完美解决Deprecated: preg_replace()报错的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具PHP准确正则匹配手机号码(记解决PHP正则的Unknown&Modifier错误)
要更加准确的匹配手机号码只匹配11位数字是不够的,比如说就没有以144开始的号码段,
故先要整清楚现在已经开放了多少个号码段,国家号码段分配如下:
移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
联通:130、131、132、152、155、156、185、186
电信:133、153、180、189、(1349卫通)
那么现在就可以正则匹配测试了,
第一:代码和测试结果如下图1所示:
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/jiang_killer/pic/item/609bcdf29bacc99.jpg" SMALL="0"
ALT="PHP准确正则匹配手机号码(记解决PHP正则的Unknown&Modifier错误)"
TITLE="PHP准确正则匹配手机号码(记解决PHP正则的Unknown&Modifier错误)" />
--------------------------------------------------------------------------------------------------------------------------------------------
第二:如果在图1的代码中去掉两个红色圆圈的斜杠,那么会出现下面的错误,如图2所示,
modifier的错误提示。
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/jiang_killer/pic/item/d772ce00e0cc62.jpg" SMALL="0"
ALT="PHP准确正则匹配手机号码(记解决PHP正则的Unknown&Modifier错误)"
TITLE="PHP准确正则匹配手机号码(记解决PHP正则的Unknown&Modifier错误)" />
第三:注意,对于图1中,去掉绿色圆圈的两个斜杠,在php代码中依然能够正则正常,
但是在JavaScript中就会不行,所以建议自己使用时测试下这两种情况。
第四:关于出现unknown modifier
其他情况补充知识,在正则模式中,用/做定界符,
但正则中也含有/,因此会出现此错误,PHP误当后面的一个中的斜杠是结束的定界符。
如下正则:
$a='2&span&&nobr&t&ng&span
class="h"&d&ng&/span&&/nobr&&br&垌&/span&3';
preg_replace('/&span
class="h"&[^&]*?&/span&/','',$a);
preg_replace(): Unknown modifier 'p'。。。。。
在正则模式中,用/做定界符,但正则中也含有/,因此会出现此错误,PHP误当后面的
一个&/span&中的斜杠是结束的定界符。
解决办法:
1、加一个转义符:
preg_replace('/&span
class="h"&[^&]*?&\/span&/','',$a);
2、改其它定界符:如
preg_replace('{&span
class="h"&[^&]*?&/span&}','',$a);
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 php preg replace 1 的文章

 

随机推荐