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