0

我在两个不同的操作系统上使用两个不同版本的 php。

一种是在 windows (wamp) 上运行的 5.2.9。

一种是在 CentOS 5(灯)上运行的 5.2.6。

涉及组名的正则表达式适用于 Windows,但不适用于 CentOS。

这样的例子是/^field_(?<myname>.+)/

这是操作系统问题吗?或者与 PHP 的构建方式之一?

谢谢,

4

2 回答 2

1

PHP 中可用的大多数正则表达式函数都源自 libpcre,该库在过去几年中经历了动荡的历史,以应对一些安全问题,这些问题的修复改变了语义。默认情况下构建 PHP 时,它使用捆绑的 libpcre,当发生更改时,它会在此处的更改日志中记录:http ://www.php.net/ChangeLog-5.php 。某些发行版或者如果您自己编译可能会导致 php 使用具有该版本语义的外部 libpcre。

没有好的解决方案,除了到目前为止事情往往会向前发展,这意味着如果您的正则表达式使用最新版本,它往往会在历史版本中工作,相反,正如我所指出的那样,这是不正确的。

于 2009-09-04T03:39:02.283 回答
0

您使用哪些正则表达式函数?PHP 有eregpreg, preg 正则表达式的行为类似于 perls 正则表达式,并且在所有操作系统上的行为应该相同。

于 2009-09-04T03:27:13.453 回答