可能重复:
Function ereg_replace() is deprecated - How to clear this bug?PHP额日格和预浸
我有这样的脚本下载的PHP类
ereg('^([^=]*)=["\']?([^"\']*)["\']?$',$v,$a3);
现在抛出错误弃用的功能。
我该如何将它替换为preg或preg匹配所有?
可能重复:
Function ereg_replace() is deprecated - How to clear this bug?PHP额日格和预浸
我有这样的脚本下载的PHP类
ereg('^([^=]*)=["\']?([^"\']*)["\']?$',$v,$a3);
现在抛出错误弃用的功能。
我该如何将它替换为preg或preg匹配所有?
尝试:
preg_match('/^([^=]*)=["\']?([^"\']*)["\']?$/', $v, $a3);
是非常相似的。 PREG包含模式内的标志,EREG不包含。由于这个原因,PREG在模式的开头和结尾需要一个分隔符char(我使用/
)。事实上,PREG搜索模式后的标志,例如,有一个区分大小写的匹配您添加i
标志:
preg_match('/^([^=]*)=["\']?([^"\']*)["\']?$/i', $v, $a3);
最大的区别是,正则表达式需要从某个字符开始,并以此结束。所以如果你用/或#开始和结束正则表达式,你应该没问题。从外观上看,我没有看到任何不相容的东西。试一试。
考虑使用back references。您的表情将匹配foo="bar'
,但不匹配foo="bar'baz"
。
#^([^=]*)=(["\']?)([^\2]*)\2$#
使用,以取代HTML标签 – niksmac 2012-02-09 10:15:24
改变这一额日格( '^([^ =] *)=“\']?([^ ”\“] *)[” \ '] $', $ v,$ a3);至 preg_match(“/ ^([^ =] *)= [”\']?([^'\'] *)[“\']?$ /”,$ v, $ A3); – 2012-02-09 10:17:25