我在两个不同的操作系统上使用两个不同版本的php。
一个是5.2.9在Windows上运行(wamp)。
一个是在CentOS 5(灯泡)上运行的5.2.6。
涉及组名的正则表达式适用于Windows,但不适用于CentOS。
这样的例子是/^field_(?<myname>.+)/
这是操作系统问题吗?或者像PHP一样构建一个?
谢谢,
答案 0 :(得分:1)
PHP中可用的大多数正则表达式函数都可以追溯到libpcre,该库在几年内有一个动荡的历史记录,以回应一些安全问题,这些问题的修复程序会改变语义。在默认情况下构建PHP时,它使用捆绑的libpcre,当更改时,会在更改日志中注明:http://www.php.net/ChangeLog-5.php。一些发行版或者如果你自己编译可能会导致php使用外部libpcre,它将具有该版本的语义。
没有好的解决方案,除了到目前为止事情往往会向前发展,这意味着如果你的正则表达式适用于最新版本,它往往适用于历史版本,反过来,正如我所指出的那样,不是真的。
答案 1 :(得分:0)