2012-02-09 49 views
1

可能重复:
Function ereg_replace() is deprecated - How to clear this bug?PHP额日格和预浸

我有这样的脚本下载的PHP类

ereg('^([^=]*)=["\']?([^"\']*)["\']?$',$v,$a3); 

现在抛出错误弃用的功能。

我该如何将它替换为preg或preg匹配所有?

+0

使用,以取代HTML标签 – niksmac 2012-02-09 10:15:24

+0

改变这一额日格( '^([^ =] *)=“\']?([^ ”\“] *)[” \ '] $', $ v,$ a3);至 preg_match(“/ ^([^ =] *)= [”\']?([^'\'] *)[“\']?$ /”,$ v, $ A3); – 2012-02-09 10:17:25

回答

1

尝试:

preg_match('/^([^=]*)=["\']?([^"\']*)["\']?$/', $v, $a3); 

是非常相似的。 PREG包含模式内的标志,EREG不包含。由于这个原因,PREG在模式的开头和结尾需要一个分隔符char(我使用/)。事实上,PREG搜索模式后的标志,例如,有一个区分大小写的匹配您添加i标志:

preg_match('/^([^=]*)=["\']?([^"\']*)["\']?$/i', $v, $a3); 
1

最大的区别是,正则表达式需要从某个字符开始,并以此结束。所以如果你用/或#开始和结束正则表达式,你应该没问题。从外观上看,我没有看到任何不相容的东西。试一试。

0

考虑使用back references。您的表情将匹配foo="bar',但不匹配foo="bar'baz"

#^([^=]*)=(["\']?)([^\2]*)\2$#