2016-08-05 227 views
1

我已经将一个站点迁移到一个新的服务器,我已经确认PHP版本和扩展一样(5.3)。Preg_Match_All:编译失败

我有一个问题与preg_match_all。我得到的错误是:

preg_match_all()[function.preg-全匹配]: 编译失败:?(R或([+ - ]数字必须后跟)在 偏移22

这条线路是:

if (preg_match_all('/([^{]++)({([^{}]++|(?R2))*})/', $code, $items, PREG_SET_ORDER)) { // split declarations 

这是一个随机的插件,没有支持,只是想知道,如果它实际上是缺少一个)。

由于某些原因,此代码仍然在原始服务器上工作。

回答

0

最好把你想要在其上运行函数的字符串样本。

但是,错误是因为'?'是正则表达式中的一个运算符。你应该逃避它。通过反斜杠

if (preg_match_all('/([^{]++)({([^{}]++|(\?R2))*})/', $code, $items, PREG_SET_ORDER)) { // split declarations