将字符串转换为数组PHP?
问题描述:
这里是我的问题 我有一个字符串"[[10,20],[30,40],[50,30]]"
可以通过简单地使用json_decode
这对于数值正常工作,但它的失败字符串值像"[S,M,L]"
,我用一个简单的逻辑将字符串转换为数组PHP?
$string_value = str_replace(',', '","', $string_value);
$string_value = str_replace('[', '["', $string_value);
$string_value = str_replace(']', '"]', $string_value);
$string_value = json_decode($string_value);
处理转换成数组这工作得很好像上述但考虑到一个一个维数组中二维数组的情况下,像[[red,green],[red],[red,blue]]
它的失败,有没有提前做这个
感谢的另一种方式......
答
一个正则表达式替换将工作包的所有字母字符加引号:
$value = preg_replace("(\w+)", '\'$0\'', $input);
像这样:
<?php
$input1 = "[[10,20],[30,40],[50,30]]";
$input2 = "[[red,green],[red],[red,blue]]";
$value1 = preg_replace("(\w+)", '\'$0\'', $input1);
$value2 = preg_replace("(\w+)", '\'$0\'', $input2);
echo $value1;
echo "<br />";
echo $value2;
?>
给了我这样的输出:
[['10','20'],['30','40'],['50','30']]
[['red','green'],['red'],['red','blue']]
答
将字符串转换为1维数组fisrt删除括号,然后只有用逗号分隔的字符串使用explode
fun ction:
$result=str_replace(array('[',']'),'',$original_string);
$result=explode(',',$result);
这可以帮助输入只有二维数组:
$final_array=array();
// separate each brackets
$separate_in_arrays=explode(',',$osiginal_string);
foreach ($separate_in_array as $array) {
$result=str_replace(array('[',']'),'',$array[0]);
$result=explode(',',$result);
// Save result in a nested array
$final_array[]=$result;
}
那么你可以取代'[ “['和'['和']”]'和']'在最后 – Musa
为什么你会得到那些编码不正确的字符串?我会看着另一端并修复它。 – AbraCadaver
试图为非标准化格式编写自己的解析器,您将始终遇到问题,异常等。难道您无法修复输入吗? – jeroen