1

key => value既に構築されたphp関数を操作して、フォーマット内の文字列をそれぞれキーと値を持つ実際の文字列に変換する方法があるかどうかを尋ねたいですか? parse_str があることは知っていますが、これはkey=value構文のためだと思います

質問は不明確であるように思われるので、ここに例を示します:

次のような文字列がcolor => blue\nshape => sphere\nsize => mediumあり、それを配列に変換したい

4

4 に答える 4

1

このコードを試してください:

$str='color => blue\nshape => sphere\nsize => medium;';
$first_arr=explode('\\', $str);
$array=array();
foreach ($first_arr as $value) {
    $var=explode('=>', $value);
    $array[$var[0]]=$var[1];
}
var_dump($array);
于 2013-08-11T21:41:37.037 に答える
1

文字を置き換えて parse_str を使用できます。

$string = 'color => blue\nshape => sphere\nsize => medium';
$string = str_replace(array(' => ', "\\n"), array('=', '&'), $string);
parse_str($string, $output);

print_r($output);

編集:

または、 strtokexpandの組み合わせを使用します。

$string = 'color => blue\nshape => sphere\nsize => medium';
$output = array();
$tok = strtok($string, "\\n");
while ($tok !== false) {
    $array = explode(' => ', $tok);
    $output[$array[0]] = $array[1];
    $tok = strtok("\\n");
}

print_r($output);

strtok は、区切り文字が 1 文字である場合にのみ役立つことに気付きました。したがって、爆発バージョンのみを使用することをお勧めします。

于 2013-08-11T21:38:31.443 に答える
0
$string = 'color => blue\nshape => sphere\nsize => medium';
$foo = array();

// Explode your string
$stringParts = explode("\n", $string);

foreach ($stringParts as $item) {

    // For each "item" in your string
    // Separate key from value
    $item = explode(' => ', $item);

    // Assign it as a key-value combination in your new array $foo
    $foo[$item[0]] = $item[1];
}

print_r($foo);
于 2013-08-11T21:35:54.727 に答える
-1
parse_str(str_replace("\n", "&", $str), $output);   
于 2018-03-04T14:08:11.340 に答える