gpt4 book ai didi

php 5.3.6 破坏了我的正则表达式模式

转载 作者:可可西里 更新时间:2023-11-01 01:07:55 24 4
gpt4 key购买 nike

奇怪的事情发生了,当我正在工作的网站被转移到另一个装有较新版本 PHP 的服务器上时。在其他 3 个不同服务器上正常工作的正则表达式拒绝工作,一直返回 0。
这是原始的正则表达式:

/\A(?P<text>[[:alpha:]]{4})[[:space:]](?P<password>[\p{L}\p{N}]{3,})[[:space:]](?P<digit1>[[:digit:]]{2,4})[[:space:]](?P<digit2>[[:digit:]]{1,2})\z/u

密码必须是 unicode,在它只是 [[:alnum:]] 之前,但客户端存在一些问题。
这些是我尝试过但无济于事的:

/\A(?<text>[[:alpha:]]{4}) (?<password>[[:alnum:]]{3,}) (?<digit1>[[:digit:]]{2,4}) (?<digit2>[[:digit:]]{1,2})\z/u
/\A(?<text>[\p{L}]{4}) (?<password>[\p{L}\p{N}]{3,}) (?<digit1>\d{2,4}) (?<digit2>\d{1,2})\z/u

示例文本:ABCD 1a2b3c 100 50

所有这些都在 http://www.spaweditor.com/scripts/regex/index.php 上进行了测试并且工作完美。

谁能告诉我这是怎么回事?我知道它可能不是您见过的最漂亮的正则表达式,但它像预期的那样工作(或至少工作到现在)。现在我在责怪 PHP(笑)。

编辑:在这些网站上测试了最后一个模式:
* http://regex.larsolavtorvik.com/
* http://www.spaweditor.com/scripts/regex/index.php
* http://www.pagecolumn.com/tool/pregtest.htm
* http://lumadis.be/regex/test_regex.php
在其他一些地方,它允许我自己完全输入我的正则表达式,带有斜杠和 u 标志。在所有这些网站上它都有效,但在其他一些网站上我检查过它没有,就像我的服务器一样。

PCRE 支持 unicode...

编辑:似乎系统管理员毕竟改变了一些东西......直到 10 分钟前才工作:/有人关闭这个问题,所有的正则表达式现在都可以工作。

最佳答案

您应该检查您的 PCRE 扩展版本(phpinfo() -> PCRE 库版本)。部分服务器有<8,版本>=8只支持unicode。

Here是一个很好的例子,说明如何使用 PHP 5.2 在 CentOS 上解决问题,您也可以使用 PHP 5.3 检查它。

关于php 5.3.6 破坏了我的正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6909057/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com