preg_match PHP版本之间的不同行为

时间:2013-01-18 17:18:31

标签: php preg-match

我正在尝试验证法国地址的格式。 这是我期待的那种格式:

5 street name
35230 Village

所以我们有一个带有可选号码的道路地址,后面跟着一个邮政编码和村庄的名称(公社)。

在我的开发服务器上,我正在运行PHP v5.2.5。

此代码行正在运行

$AdOk = preg_match("/^([0-9a-zA-Z-, '\\n]+)(\\d{5})([, ]+)([0-9a-zA-Z-, '\\n]+)$/iu", $ClientAddress);

但是,当我在生产服务器上运行它时,它会失败。

生产中的PHP版本是v5.3.19

任何人都可以帮我解决这个问题吗?

顺便说一下,我还需要添加重音字符!

2 个答案:

答案 0 :(得分:0)

事实上,使用单引号就会产生问题。

脚本收到的是\',斜线导致测试失败。

答案 1 :(得分:0)

也许你可以试试这个:'/^([\da-z\-,\'\s]+)(\d{5})([,\s]+)([\da-z\-,\'\s]+)$/iu'。这个是使用单引号我使用\ s而不是空格和新行。请让我知道两台服务器之间的结果。