$str = 'answers[0] = "Love it"; answers[1] = "Hate it."; answers[2] = "Doesnt care"; answers[3] = "Like it";'
如何将其转换为数组?PHP将字符串数组列表转换为数组
$str = 'answers[0] = "Love it"; answers[1] = "Hate it."; answers[2] = "Doesnt care"; answers[3] = "Like it";'
如何将其转换为数组?PHP将字符串数组列表转换为数组
$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);
以上工作是杉木样品,但如果有其他字符串文字(或可能是HEREDOCS e.t.c.) –
取决于是否有任何其他变种 –
是的,我认为是这样.. –
这样的事情?
<?php
$str = '$answers[0] = "Love it"; $answers[1] = "Hate it."; $answers[2] = "Doesnt care"; $answers[3] = "Like it";';
eval($str);
print_r($answers);
?>
如果不需要,不要使用'eval()'。而且总有另一种方法来实现你想要的。另外,OP示例字符串中没有'$'符号,所以它不是答案。 –
eval()不是一个好的习惯..它允许在服务器中执行代码以进行输入..这可能会损害您的服务器.....所以尝试另一种方法.... –
使用
使preg_split
只选择值,并把它放在一个数组
例如:
$keywords = preg_split("/[\s,]+/", $str);
只要改变该p attern!
$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];
}
$ myArray出现错误[] = $ chunks1 [1]; –
你得到的错误是什么? – sskoko
$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);
不错的工作,谢谢你 –
如果你能分号(;
)后增加新的线路,看看在parse_ini_string()
功能。
$str = str_replace(';', "\n", $str); // <- add them in the source if you can
$array = parse_ini_string($str);
是的,另一个解决方案是有效的。谢了哥们! –
第一个问题是,你是如何得到这样的字符串? –
看起来像[XY问题](http://meta.stackexchange.com/a/66378)。你从哪里得到这个字符串? – Reeno
将它转换为数组并不容易......我们如何分割这种类型的字符串......?尝试只通过这个输入值只有值。 –