2012-01-12 45 views
0

嗨,大家好,我下面是我从卷曲响应中收到的。什么可能是最简单的解析标题和身体的方式php

HTTP/1.1 200 OK 
X-Account-Object-Count: 4 
X-Account-Bytes-Used: 3072798 
X-Account-Container-Count: 3 
Accept-Ranges: bytes 
Content-Length: 15 
Content-Type: text/plain; charset=utf-8 
Date: Thu, 12 Jan 2012 04:07:33 GMT 

a1 
abc 
testing 

我发现了解析头一个很好的功能,我可以抢在头中的键值对不是一个问题,我的问题是如何抓住名字在体内 A1 ABC 测试

我认为可能是正则表达式可以做的最好的工作,但不知道是否正则表达式是最好的方法或是否有任何其他函数可以返回标题separete和身体分开。

任何帮助表示赞赏。谢谢。

更新 现在我得到响应,

HTTP/1.1 200 OK 
X-Account-Object-Count: 4 
X-Account-Bytes-Used: 3072798 
X-Account-Container-Count: 3 
Accept-Ranges: bytes 
Content-Length: 115 
Content-Type: application/json; charset=utf-8 
Date: Thu, 12 Jan 2012 04:47:36 GMT 

[{"name":"a1","count":0,"bytes":0},{"name":"abc","count":0,"bytes":0},{"name":"testing","count":4,"bytes":3072798}] 

所以名称是JSON

+1

HTTP头总是与空白线分离。这是HTTP规范的一部分,应该始终如此(如果不是,那么你可以说它不是http)。 – 2012-01-12 04:20:55

+0

以及如何使用php – 2012-01-12 04:26:10

+0

检测空白行取决于您如何解析响应。如果你一行一行地去,那么当你打空行时,你已经完成了标题并且已经到达了主体。否则,请查找“\ n \ n”并在其上分开/分开。 – 2012-01-12 04:27:39

回答

1

看来似乎应该是简单的:

list($headers, $body) = explode("\n\n", $response); 
$bodyValues = explode("\n", $body); 
+0

$ header和$ body打印值1而不是别的 – 2012-01-12 04:24:41

+1

行结束可能取决于您的操作系统。尝试'\ r \ n'而不是'\ n'。请参阅http://codepad.viper-7.com/RKkPh2。否则,“印花1”究竟意味着什么? – deceze 2012-01-12 04:37:42

+0

非常感谢冠军。祝你生活愉快。 ..真棒解决方案只有两行代码...好在YA。 – 2012-01-12 04:56:58