Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.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
尝试匹配数字时出现PHP正则表达式问题_Php_Preg Match - Fatal编程技术网

尝试匹配数字时出现PHP正则表达式问题

尝试匹配数字时出现PHP正则表达式问题,php,preg-match,Php,Preg Match,我对PHP中的正则表达式有一个问题 我试图为通过CURL接收到的一些头数据找到匹配项。然而,我的正则表达式匹配两行,而不是一行 下面是我的正则表达式模式: /^(http\/\d\.\d)\s+(100)\s+([\w\-\s\/\'\"\(\)\\\.]+)$/im 下面是我正在尝试匹配的字符串: HTTP/1.1 100 Continue HTTP/1.1 201 Created Content-Length: 118 Content-Type: text/html; charset=U

我对PHP中的正则表达式有一个问题

我试图为通过CURL接收到的一些头数据找到匹配项。然而,我的正则表达式匹配两行,而不是一行

下面是我的正则表达式模式:

/^(http\/\d\.\d)\s+(100)\s+([\w\-\s\/\'\"\(\)\\\.]+)$/im
下面是我正在尝试匹配的字符串:

HTTP/1.1 100 Continue

HTTP/1.1 201 Created
Content-Length: 118
Content-Type: text/html; charset=UTF-8
Etag: 8c59b7e37f672374c61245c8115f53d0
Last-Modified: Tue, 16 Aug 2011 20:24:10 GMT
X-Trans-Id: txd6cbafcec90d4e30b2a108ff3157c1b1
Date: Tue, 16 Aug 2011 20:24:10 GMT
它应该和第一行匹配,但我得到了100和201的匹配。我不明白它为什么这么做

顺便说一下,我用的是preg_match

有没有办法解决这个问题?谢谢。

更新: “多行”修改器与实际原因正交。您的问题是字符类定义(在方括号之间)包括
\s
,它匹配任何空白字符,包括换行符。在本例中,将其替换为实际的空格,以匹配该空格

另一方面,如果您有权在服务器上安装扩展,您可能希望使用该扩展解析http,而不是手动执行。

Update: “多行”修改器与实际原因正交。您的问题是字符类定义(在方括号之间)包括
\s
,它匹配任何空白字符,包括换行符。在本例中,将其替换为实际的空格,以匹配该空格


另一方面,如果您有权在服务器上安装扩展,您可能希望使用扩展解析http,而不是手动解析。

@troelskn是正确的,但是您也可以让CURL告诉您http响应代码:

$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);

编辑:而不是:

/^(http\/\d\.\d)\s(100)\s([\w\-\s\/\'\"\(\)\\\.]+)$/im
Try():


@Troleskn是对的,但是您也可以让CURL告诉您HTTP响应代码:

$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);

编辑:而不是:

/^(http\/\d\.\d)\s(100)\s([\w\-\s\/\'\"\(\)\\\.]+)$/im
Try():


谢谢,但这不管用。如果你有时间,你可以在regexpal.com上试试,看看我的意思。你是对的,我应该在回答你的问题之前测试一下。我更新了一个新答案。太棒了。实际上,我将停止使用\s.funcy,但是当我在PHP的末尾加上“\n”时,第一个正则表达式在PHP中工作,但在正则表达式中失败。无论如何,删除\s并添加手动空间是一个更优雅的解决方案。谢谢,但这不起作用。如果你有时间,你可以在regexpal.com上试试,看看我的意思。你是对的,我应该在回答你的问题之前测试一下。我更新了一个新答案。太棒了。实际上,我将停止使用\s.funcy,但是当我在PHP的末尾加上“\n”时,第一个正则表达式在PHP中工作,但在正则表达式中失败。无论如何,去掉\s并添加手动空间是一个更优雅的解决方案。