Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我在Ruby工作的正则表达式不';PHP中的t;原因可能是什么?_Php_Ruby_Regex - Fatal编程技术网

我在Ruby工作的正则表达式不';PHP中的t;原因可能是什么?

我在Ruby工作的正则表达式不';PHP中的t;原因可能是什么?,php,ruby,regex,Php,Ruby,Regex,我不认识鲁比。我试图使用ruby在php中生成的以下正则表达式(即通过运行给定的rfc1738语法)。它在php中无法匹配,但在ruby中成功匹配。有人看到php和ruby对正则表达式的处理有什么不同之处,可以解释这种差异吗 http:\/\/(?:(?:(?:(?:[0-9a-z]|[0-9a-z](?:[\x2d0-9a-z]?)*[0-9a-z])\x2e)?)*(?:[a-z]|[a-z](?:[\x2d0-9a-z]?)*[0-9a-z])|\d+\x2e\d+\x2e\d+\x2e\

我不认识鲁比。我试图使用ruby在php中生成的以下正则表达式(即通过运行给定的rfc1738语法)。它在php中无法匹配,但在ruby中成功匹配。有人看到php和ruby对正则表达式的处理有什么不同之处,可以解释这种差异吗

http:\/\/(?:(?:(?:(?:[0-9a-z]|[0-9a-z](?:[\x2d0-9a-z]?)*[0-9a-z])\x2e)?)*(?:[a-z]|[a-z](?:[\x2d0-9a-z]?)*[0-9a-z])|\d+\x2e\d+\x2e\d+\x2e\d+)(?::\d+)?(?:\/(?:(?:[!\x24'-\x2e0-9_a-z]|%[0-9a-f][0-9a-f]|[&:;=@])?)*(?:(?:\/(?:(?:[!\x24'-\x2e0-9_a-z]|%[0-9a-f][0-9a-f]|[&:;=@])?)*)?)*(?:\x3f(?:(?:[!\x24'-\x2e0-9_a-z]|%[0-9a-f][0-9a-f]|[&:;=@])?)*)?)?/i (3)0-9a-z[0-9a-AZ[0-9a-z[0-9a-z[0-9a-z]((:::::::[0-2010-9a-9a-9a-z-z-z[10-9 a-9a-z-z[0-9a-a-z[0-9a-z][0-9a-z[0-9a-z[0-a-z]((:::::[0-0-9-9-9-9-9-9-9-9 a-9-9-9 a-a-z[0-a-z[0-a-z[0-a-z[0-a-z[0-a-z[0-a-a-a-z])((((((:::::::::[0-9a-0-9-9-9-9 a-9 a-9-9-9-9-124;[&:;=@])?*(?:(?:\/(?:[!\ x24'-\x2e0-9_-a-z]|%[0-9a-f][0-9a-f]。[&:=@])*(?:\x3f(?:[!\x24'-\x2e0-9_-a-z]|%[0-9a-f][0-9a-f]|&=@])*)/i 既然你们都很喜欢正则表达式,那么另一种解决方案怎么样。 给定rfc中的ABNF,我想要一种(在php中)检查语法中是否存在任意字符串的方法

无法在64位系统上编译

不是免费的


我还没有找到其他类似的工具。我也不希望使用正则表达式,但这是我最接近成功的一种方法。

如果能看到您试图在PHP中使用的代码示例,那就太好了,但请尝试以下操作(请记住将$\u SERVER[“HTTP\u REFERER”]更改为您的输入变量):


您需要发布一个代码示例,展示如何在Ruby中调用reg-ex,以及如何在PHP中调用它。大多数PHP reg ex问题归结为字符串转义。i、 在PHP中,将字符串传递给pcre函数。字符串在进入reg-ex引擎之前应用了转义,这意味着您认为经常通过的reg-ex不是实际的。(还有PCRE(preg_uuu)vs.(ereg_uu)的问题。你可能想要preg。有些人在遇到问题时会想“我知道,我会使用正则表达式。”现在他们有两个问题。在生成正则表达式方面,唯一比人类更糟糕的是计算机。有些人在遇到正则表达式时,只能想到引用另一个开发人员的snark。用ruby调用它,我将生成的正则表达式保存为re,然后运行pp'=~re,据我所知,它在匹配中给了我一个非零的值。在php中,我复制了打印的正则表达式并将其保存在一个文件中。然后打开该文件,使用fgets从文件中读取正则表达式(我假设这会进行所有必要的转义…或者至少避免了必要的转义),将其保存在$re中,然后运行echo preg_match($re');不幸的是,这不会对$U服务器[“HTTP\u REFERER”]产生任何结果等于“”。我不希望如此-您的正则表达式在开始时需要http://也许您可以更好地解释您试图实现的目标。注释中自动链接的测试;我这次编写了http:您只是试图在输入文本中标识URI链接吗?如果是,您的正则表达式不正确,您应该使用:\b(https?| ftp |文件)://[-A-Z0-9+&@#/%?=~ |!:,.;]*[-A-Z0-9+&@#/%=~ |
if (preg_match('#http://(?:(?:(?:(?:[0-9a-z]|[0-9a-z](?:[\\x2d0-9a-z]?)*[0-9a-z])\\x2e)?)*(?:[a-z]|[a-z](?:[\\x2d0-9a-z]?)*[0-9a-z])|\\d+\\x2e\\d+\\x2e\\d+\\x2e\\d+)(?::\\d+)?(?:/(?:(?:[!\\x24\'-\\x2e0-9_a-z]|%[0-9a-f][0-9a-f]|[&:;=@])?)*(?:(?:/(?:(?:[!\\x24\'-\\x2e0-9_a-z]|%[0-9a-f][0-9a-f]|[&:;=@])?)*)?)*(?:\\x3f(?:(?:[!\\x24\'-\\x2e0-9_a-z]|%[0-9a-f][0-9a-f]|[&:;=@])?)*)?)?#i', $_SERVER["HTTP_REFERER"], $l_Results)) {
    $result = $l_Results[1];
} else {
    $result = "";
}