Bayangkan saya memiliki variabel yang berisi nilai berikut:

$content = "[['a', 'b', 1, 4], ['a2', 'b2', 12, 42], ['a3', 'b3', 13, 43], ['a4', 'b4', 14, 44]]";

Saya ingin mengurai string ini dan membuat array multi-dimensi aktual di PHP. Sebagai contoh:

Array
(
    [0] => Array
        (
            [0] => 'a'
            [1] => 'b'
            [2] => 1
            [3] => 4
        )

    [1] => Array
        (
            [0] => 'a2'
            [1] => 'b2'
            [2] => 12
            [3] => 42
        )
    [2] => Array
        (
            [0] => 'a3'
            [1] => 'b3'
            [2] => 13
            [3] => 43
        )

    [3] => Array
        (
            [0] => 'a4'
            [1] => 'b4'
            [2] => 14
            [3] => 44
        )
)

Untuk tujuan itu, pertama-tama saya mencoba mengurai string itu melalui ekspresi reguler:

$pattern = "/\[(\[.+\])\]/i";

Namun saya gagal ketika saya mencobanya sebagai berikut:

$pattern = "/\[(\[.+\])\]/i";
$content = "[['a', 'b', 1, 4], ['a2', 'b2', 12, 42], ['a3', 'b3', 13, 43], ['a4', 'b4', 14, 44]]";

preg_match_all($pattern, $content, $results);

print_r($results);

Dan outputnya adalah:

Array ( 
    [0] => Array ( [0] => [['a', 'b', 1, 4], ['a2', 'b2', 12, 42], ['a3', 'b3', 13, 43], ['a4', 'b4', 14, 44]] ) 
    [1] => Array ( [0] => ['a', 'b', 1, 4], ['a2', 'b2', 12, 42], ['a3', 'b3', 13, 43], ['a4', 'b4', 14, 44] ) 
) 

Begitu;

  1. Bagaimana saya bisa menyelesaikan masalah regex itu?
  2. Apakah ada cara lain untuk mengimplementasikan masalah itu?

Terima kasih.

0
stuck 9 Januari 2021, 22:13

1 menjawab

Jawaban Terbaik

Konversikan ke JSON, yang sederhana yang perlu Anda lakukan hanyalah mengganti tanda kutip tunggal dengan tanda kutip ganda, maka itu akan menjadi String JSON

$content = "[['a', 'b', 1, 4], ['a2', 'b2', 12, 42], ['a3', 'b3', 13, 43], ['a4', 'b4', 14, 44]]";
$c = str_replace("'", '"', $content);

print_r(json_decode($c));

Hasil

Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
            [2] => 1
            [3] => 4
        )

    [1] => Array
        (
            [0] => a2
            [1] => b2
            [2] => 12
            [3] => 42
        )

    [2] => Array
        (
            [0] => a3
            [1] => b3
            [2] => 13
            [3] => 43
        )

    [3] => Array
        (
            [0] => a4
            [1] => b4
            [2] => 14
            [3] => 44
        )

)
2
RiggsFolly 9 Januari 2021, 19:21