2

文字列:

user:hello,user2:world

望ましい出力:

$string = array(
   1 => array( 1 => "user", 2 => "hello"),
   2 => array( 1 => "user2", 2 => "world")
);

私が試したこと(それはうまくいきません):

$string = explode(',',$string);
$string = explode(':',$string);

エラー:explode() expects parameter 2 to be string
文字列から目的の出力を取得するにはどうすればよいですか? ありがとう!

4

4 に答える 4

6

最初の爆発からの出力をループし、各値で 2 回目の爆発を行います。

$string = "user:hello,user2:world";
$array = explode(',', $string);

foreach($array as $k=>$v){
    $array[$k] = explode(':', $v);
}
于 2013-05-15T23:28:12.533 に答える
0

マニュアルのユーザーの例を使用できます。

function multiexplode ($delimiters,$string) {
    $ary = explode($delimiters[0],$string);
    array_shift($delimiters);
    if($delimiters != NULL) {
        foreach($ary as $key => $val) {
             $ary[$key] = multiexplode($delimiters, $val);
        }
    }
    return  $ary;
}

// Example of use
$string = "1-2-3|4-5|6:7-8-9-0|1,2:3-4|5";
$delimiters = Array(",",":","|","-");

$res = multiexplode($delimiters,$string);
echo '<pre>';
print_r($res);
echo '</pre>';
于 2013-05-15T23:27:58.713 に答える