将字符串转换为数组

时间:2011-10-14 04:22:07

标签: php regex string preg-match

我有以下字符串:

key:surname +++ value:Tesla|||key:name +++ value:Nikola|||key:age +++ value:86|||

如何使用PHP我可以将其转换为关联数组?像:

echo $arr['surname'];
Tesla

我正在尝试,但无法写出正确的表达方式:

$str= "key:surname +++ value:Tesla|||key:name +++ value:Nikola|||key:age +++ value:86|||"; 
preg_match_all("regex_here",$str,$out); 
unset($out[0]); 
$out = array_combine($out[1],$out[2]) ; 
print_r($out); 

感谢。

3 个答案:

答案 0 :(得分:2)

这应该做你需要的:

$str= "key:surname +++ value:Tesla|||key:name +++ value:Nikola|||key:age +++ value:86|||"; 
preg_match_all("/key:(.*?) \+\+\+ value:(.*?)\|\|\|/", $str, $out);
$out = array_combine($out[1], $out[2]) ; 
print_r($out);

正如其他人所说,如果您是存储这类数据的人,那么有许多更好的方法来存储数据,包括序列化和JSON,您可能需要查看这些数据。

答案 1 :(得分:1)

这样的事情:

preg_match_all("/:(\w+).*?:(\w+)/", $str, $matches);
var_dump(array_combine($matches[1], $matches[2]));

答案 2 :(得分:0)

为什么有三个+和三个| 。如果你是这样的话。我想你可以改成一个。然后爆炸功能可以帮助你!