2013-09-26 236 views
2
$str = 'answers[0] = "Love it"; answers[1] = "Hate it."; answers[2] = "Doesnt care"; answers[3] = "Like it";' 

如何将其转换为数组?PHP将字符串数组列表转换为数组

+7

第一个问题是,你是如何得到这样的字符串? –

+4

看起来像[XY问题](http://meta.stackexchange.com/a/66378)。你从哪里得到这个字符串? – Reeno

+0

将它转换为数组并不容易......我们如何分割这种类型的字符串......?尝试只通过这个输入值只有值。 –

回答

1
$str = 'answers[0] = "Love it"; answers[1] = "Hate it."; answers[2] = "Doesnt care"; answers[3] = "Like it";'; 

preg_match_all('/"(.*)";/U', $str, $matches); 
$arr = $matches[1]; 

var_dump($arr); 
+0

以上工作是杉木样品,但如果有其他字符串文字(或可能是HEREDOCS e.t.c.) –

+0

取决于是否有任何其他变种 –

+0

是的,我认为是这样.. –

0

这样的事情?

<?php 
$str = '$answers[0] = "Love it"; $answers[1] = "Hate it."; $answers[2] = "Doesnt care"; $answers[3] = "Like it";'; 
eval($str); 
print_r($answers); 

?> 
+2

如果不需要,不要使用'eval()'。而且总有另一种方法来实现你想要的。另外,OP示例字符串中没有'$'符号,所以它不是答案。 –

+1

eval()不是一个好的习惯..它允许在服务器中执行代码以进行输入..这可能会损害您的服务器.....所以尝试另一种方法.... –

1
$str = 'answers[0] = "Love it"; answers[1] = "Hate it."; answers[2] = "Doesnt care"; answers[3] = "Like it";'; 
$chunks = explode(';', $str); 

for ($aa=0;$aa<count($chunks);$aa++) 
{ 
    $chunks1 = explode('=', $chunks[$aa]); 
    $myArray[]=$chunks1[1]; 
} 
+0

$ myArray出现错误[] = $ chunks1 [1]; –

+0

你得到的错误是什么? – sskoko

0
$str = 'answers[0] = "Love it"; answers[1] = "Hate it."; answers[2] = "Doesnt care"; answers[3] = "Like it";'; 

preg_match_all('/"(.*?)"/', $str, $answers); 

$answer = $answers[0]; 
print_r($answer); 
+0

不错的工作,谢谢你 –

1

如果你能分号(;)后增加新的线路,看看在parse_ini_string()功能。

$str = str_replace(';', "\n", $str); // <- add them in the source if you can 
$array = parse_ini_string($str); 
+0

是的,另一个解决方案是有效的。谢了哥们! –