繁体   English   中英

在PHP中将字符串转换为key-> value数组

[英]Converting a string into a key->value array in PHP

如果我有以下格式的键-值对字符串:

MIME-Version: 1.0
From: "Tim Lincecum"
Reply-To: "Tim Lincecum"
Return-path: "Tim Lincecum"
Content-Type: text/html; charset=iso-8859-1
Subject: Giants Win World Series!

我如何获得一个数组,使arr['From'] = "Tim Lincecum",

我知道有explode()函数,但是我看到的唯一定界符(冒号)在键和值的中间,而不是在每对之间。 我该如何处理?

您可以随时使用regex :)

的PHP

$str = 'MIME-Version: 1.0' . "\r\n" .
'From: "Tim Lincecum"' . "\r\n" . 
'Reply-To: "Tim Lincecum"' . "\r\n" . 
'Return-path: "Tim Lincecum"' . "\r\n" . 
'Content-Type: text/html; charset=iso-8859-1' . "\r\n" . 
'Subject: Giants Win World Series!';

preg_match_all('/(.*?):\s?(.*?)(\r\n|$)/', $str, $matches);

$headers = array_combine(array_map('trim', $matches[1]), $matches[2]);

var_dump($headers);

输出量

array(6) {
  ["MIME-Version"]=>
  string(3) "1.0"
  ["From"]=>
  string(14) ""Tim Lincecum""
  ["Reply-To"]=>
  string(14) ""Tim Lincecum""
  ["Return-path"]=>
  string(14) ""Tim Lincecum""
  ["Content-Type"]=>
  string(29) "text/html; charset=iso-8859-1"
  ["Subject"]=>
  string(24) "Giants Win World Series!"
}

在IDEone上看到它

$temp = explode("\r\n", $string);
$sets = array();
foreach ($temp as $value) {
    $array = explode(': ', $value);
    $array[1] = trim($array[1], '"');
    $sets[$array[0]] = $array[1];
}

$string是您从数据库中获取的值。

由于我在评论中做出了很好的猜测-我想在这里需要重复作为回答:

参数之间有换行符,因此

$parameters_pairs = explode("\r\n", $parameters_string);

您可以将其拆分为以冒号分隔的名称/值对。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM