Explode函数没有正确地分离字符串。

3

使用cURL获取以下字符串。 代码可以在此评论中找到。

HTTP/1.1 200 OK ID=347 Date: Tue, 19 Feb 2013 09:15:25 GMT Server:
Apache/2.2.22 (Ubuntu) Content-length: 0 Vary: Accept-Encoding
Content-Type: text/plain; charset=ISO-8859-1

现在我需要从字符串中获取ID,为此我使用了explode将空格分隔符转换为数组,如下所示:
$getIdElem = explode(' ',$output);
echo '<pre>';print_r($getIdElem);

但是我在使用具有空格的ID字符串时,得到了带有Date:的结果。打印数组的输出如下:

Array
(
    [0] => HTTP/1.1
    [1] => 200
    [2] => OK
    [3] => ID=347
Date:
    [4] => Tue,
    [5] => 19
    [6] => Feb
    [7] => 2013
    [8] => 09:15:25
    [9] => GMT
Server:
    [10] => Apache/2.2.22
    [11] => (Ubuntu)
Content-length:
    [12] => 0
Vary:
    [13] => Accept-Encoding
Content-Type:
    [14] => text/plain;
    [15] => charset=ISO-8859-1


)

我不理解为什么explode函数中不包括该空格。有人能帮忙解释一下吗?


2
两者之间不是空格而是换行符。 - str
你觉得所有的HTTP头都在一行里,是什么让你这么想? - Álvaro González
@ÁlvaroG.Vicario 因为服务器返回的是 text/plain 响应。 - user2031602
@str 感谢您,我是PHP的新手,所以想问一下如何使用新行拆分字符串? - user2031602
explode("\n", $output) - str
@str 我已经尝试过了,但输出结果相同。我认为silkfire有一个想法可以摆脱所有的字符串函数。感谢您的支持 :) - user2031602
2个回答

1

在日期前是一个新行,而不是空格。你最好尝试使用正则表达式提取你想要的部分。


1
请使用正则表达式代替:
if (preg_match('# ID=(\d+) #', $response, $match)) { 
   $id = $match[1];
}

谢谢silkfire,这比运行几个字符串函数要容易得多。 - user2031602

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接