我想要使用不同类型的字符分解字符串。
我已经知道如何爆炸一个字符串,我也认为我知道如何在不同的层次上做到这一点。
问题是如何使用其中一个值作为名称($ var [' name'])而不是使用数字($ var [0])?
只知道如何在数组中手动执行此操作,但我不知道如何使用变量添加它。
title:hello;desc:message|title:lorem;desc:ipsum;ids:1,2,3
Array
(
[0] => Array
(
[title] => hello
[desc] => message
)
[1] => Array
(
[title] => lorem
[desc] => ipsum
[ids] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
)
)
我随机将字符串作为示例,是否有任何阵列天才可以帮助我? :)
Crack没有得到它,我想。
我已经知道如何爆炸它,但我如何使用某些值作为名称,就像我在上面展示的那样。
我试图爆炸阵列,但我不知道如何设置名称。 我一直在使用foreach()。
<?php
$string = "title:hello;desc:message|title:lorem;desc:ipsum;ids:1,2,3";
$string = explode("|", $string);
foreach($string as $split){
$split = explode(";", $split);
foreach($split as $split2){
$split2 = explode(":", $split2);
// more code..
}
}
?>
答案 0 :(得分:3)
为什么不使用json_encode() / json_decode()
或serialize() / unserialize()
?
答案 1 :(得分:1)
$input = "title:hello;desc:message|title:lorem;desc:ipsum;ids:1,2,3";
$items = preg_split("/\|/", $input);
$results = array();
$i = 0;
foreach($items as $item){
$subItems = preg_split("/;/", $item);
foreach($subItems as $subItem){
$tmp = preg_split("/:/", $subItem);
$results[$i][$tmp[0]] = $tmp[1];
}
$i++;
}
它返回:
array(2) { [0]=> array(2) { ["title"]=> string(5) "hello" ["desc"]=> string(7) "message" } [1]=> array(3) { ["title"]=> string(5) "lorem" ["desc"]=> string(5) "ipsum" ["ids"]=> string(5) "1,2,3" } }
然后处理你的'ids'索引
答案 2 :(得分:0)
您可以将字符串转换为JSON,然后将json解码为数组。例如:
$text = 'title:hello;desc:message|title:lorem;desc:ipsum;ids:1,2,3';
$json = '[' . preg_replace(
array("#(.*?):(.*?)(;|\||$)#i", "#\"((.?),(.*?))\"#i", "#(.*?)\|((.+)|$)#i", "#;#"),
array('"$1":"$2"$3','[$1]', '[{$1}],[{$2}]', ','),
$text
) . ']';
$res = json_decode($json, true);
请参阅:http://codepad.viper-7.com/ImLULZ
但是@Glavić的权利。
答案 3 :(得分:0)
我尝试使用具有确切输出的explode()
而没有正则表达式,但是在您接受的答案中给出了
id 为string
<?php
$str="title:hello;desc:message|title:lorem;desc:ipsum;ids:1,2,3";
$a=explode("|",$str)[0];
$b=explode("|",$str)[1];
$c=explode(";",$a)[0];
$d=explode(";",$a)[1];
$f=explode(";",$b)[0];
$g=explode(";",$b)[1];
$i=explode(";",$b)[2];
$e[][explode(":",$c)[0]]=explode(":",$c)[1];
$e[explode(":",$d)[0]]=explode(":",$d)[1];
$e[][explode(":",$f)[0]]=explode(":",$f)[1];
$e[1][explode(":",$g)[0]]=explode(":",$g)[1];
$e[1][explode(":",$i)[0]]=explode(",",explode(":",$i)[1]);
var_dump($e);
<强>输出强>:
array (size=3)
0 =>
array (size=1)
'title' => string 'hello' (length=5)
'desc' => string 'message' (length=7)
1 =>
array (size=3)
'title' => string 'lorem' (length=5)
'desc' => string 'ipsum' (length=5)
'ids' =>
array (size=3)
0 => string '1' (length=1)
1 => string '2' (length=1)
2 => string '3' (length=1)