正则表达式与PHP 5.3到5.4的差异

正则表达式与PHP 5.3到5.4的差异,php,regex,Php,Regex,在我的开发系统上,我别无选择,只能安装PHP5.4,但实时服务器是PHP5.3 我编写了以下代码行来删除数据:major/minor;base64,从JavaScript base64编码字符串开始 preg_replace("/^data\:(:?.*)?base64\,(.*)/", "$2", $src) 它在我的开发机器上工作,但在实时系统上不工作。我的问题是,不管它是否正确,为什么它在PHP5.4中工作,而在PHP5.3中却不工作?我应该注意的regex引擎的区别是什么?下一个问题是

在我的开发系统上,我别无选择,只能安装PHP5.4,但实时服务器是PHP5.3

我编写了以下代码行来删除
数据:major/minor;base64,
从JavaScript base64编码字符串开始

preg_replace("/^data\:(:?.*)?base64\,(.*)/", "$2", $src)
它在我的开发机器上工作,但在实时系统上不工作。我的问题是,不管它是否正确,为什么它在PHP5.4中工作,而在PHP5.3中却不工作?我应该注意的regex引擎的区别是什么?下一个问题是,如果正则表达式是错误的,它应该看起来如何?

尝试使用此正则表达式:

^data\:[^\?]*?base64\,(.*)


滥用标签
javascript
。。。5.4在开发中,5.3在产品中?你会遇到一些问题。我建议你绑架你的系统管理员,强迫他设置一个5.3。@michail\u这是一个建议的标签。因此建议使用PHP正则表达式和javascript。复制并粘贴到一个新问题中,它将对您起到同样的作用。与
preg_replace
相关的内容从5.3更改为5.4。一定是别的原因。在这里用从5.3.0到5.5.5的各种版本对它进行了测试:到底什么不起作用?错误?不正确的结果?你能解释一下正则表达式对其他部分做了什么吗?这不是对部分的,你只需要匹配所有没有
字符的字符。因为
是分隔符,所以不应该使用
*
,因为它可以将整个文本匹配到他的结尾,而其他部分则不匹配。这似乎是解决一半问题的好答案。为了安全起见,我做了很多事情。但是感谢您,您不需要在字符类中转义