我有一个包含多个标题信息实例的大字符串。例如:
HTTP/1.1 302 Found
Cache-Control: no-cache, no-store, must-revalidate
Content-Type: text/html; charset=iso-8859-1
Date: Tue, 01 Mar 2016 01:43:13 GMT
Expires: Sat, 26 Jul 1997 05:00:00 GMT
Location: http://www.google.com
Pragma: no-cache
Server: nginx/1.7.9
Content-Length: 294
Connection: keep-alive
在"位置:"之后,我想将该行的所有数据保存到数组中。可能有3或4行要从大块文本中保存。
我怎么能这样做?
谢谢!
答案 0 :(得分:1)
有很多方法可以做到这一点。
Location:
$text = substr($text, strpos($text, 'Location:'));
$array = explode(PHP_EOL, $text);
Location:
及其后的所有内容preg_match_all('~(Location:.+)~s', $text, $output);
$output = explode(PHP_EOL, $output[0][0]);
注意:s
修饰符表示将换行符作为.
的一部分进行匹配 - 否则它们将被忽略,新行将终止捕获。
答案 1 :(得分:0)
我发现另一种方式也有效我想我会添加以防万一:
foreach(preg_split("/((\r?\n)|(\r\n?))/", $bigString) as $line){
if (strpos($line, 'Location') !== false) {
// Do stuff with the line
}
}
来源:Iterate over each line in a string in PHP 那里还有很多有用的其他方法。