Rumah > pembangunan bahagian belakang > masalah PHP > Bagaimana untuk menukar rentetan braced kepada array dalam PHP

Bagaimana untuk menukar rentetan braced kepada array dalam PHP

PHPz
Lepaskan: 2023-04-26 09:47:33
asal
789 orang telah melayarinya

Dalam pembangunan PHP, kita selalunya perlu mengendalikan penukaran rentetan dan tatasusunan dalam logik kod. Salah satu kes biasa ialah menukar rentetan yang dikurung menjadi tatasusunan PHP. Transformasi ini membolehkan kami memanipulasi data dengan lebih mudah. Dalam artikel ini, kita akan membincangkan cara menukar rentetan yang dikurung menjadi tatasusunan dalam PHP.

  1. Rentetan kurungan

Rentetan kurungan ialah rentetan yang dikelilingi oleh kurungan kerinting ({}), di mana setiap pasangan nilai kunci didahului dengan titik bertindih ( :), berbilang pasangan nilai kunci dipisahkan dengan koma (,). Sebagai contoh, berikut ialah contoh rentetan kurung:

$str = "{ 'name': 'John', 'age': 25, 'city': 'New York' }";
Salin selepas log masuk

Format rentetan kurung hampir serupa dengan format JSON. Walau bagaimanapun, terdapat perbezaan utama antara mereka, iaitu dalam rentetan pendakap, nama kunci dan nilai rentetan mesti disertakan dalam petikan tunggal ('), manakala dalam JSON mereka boleh menggunakan petikan tunggal atau berganda ("" ).

  1. Kaedah penukaran

Dalam PHP, kita boleh menggunakan fungsi eval() untuk menukar rentetan pendakap kepada tatasusunan. Fungsi eval() akan melaksanakan rentetan yang dihantar sebagai kod PHP, jadi kita boleh melakukannya dengan melepaskan petikan dalam rentetan pendakap dan memasukkannya ke dalam pembolehubah rentetan dan menghantar pembolehubah itu ke fungsi eval () untuk mencapai penukaran. Langkah-langkah khusus adalah seperti berikut:

  • Escape petikan tunggal dalam rentetan pendakap untuk menggandakan petikan
  • Masukkan keseluruhan rentetan ke dalam pembolehubah rentetan
  • Gunakan eval () berfungsi untuk melaksanakan pembolehubah rentetan sebagai kod PHP dan mendapatkan tatasusunan

Berikut ialah contoh:

$str = "{ 'name': 'John', 'age': 25, 'city': 'New York' }";

// 将单引号转义为双引号
$json = str_replace("'", "\"", $str);

// 将字符串放到一个字符串变量中
$code = '$arr = ' . $json . ';';

// 使用eval()函数执行代码,得到数组
eval($code);

print_r($arr);
Salin selepas log masuk

Hasil pelaksanaan kod adalah seperti berikut:

Array
(
    [name] => John
    [age] => 25
    [city] => New York
)
Salin selepas log masuk
    Gunakan fungsi eval() hanya apabila perlu, dan cuba gunakan kaedah penukaran lain
  1. Lakukan tidak menukar input Pengguna yang tidak ditapis sebagai parameter bagi fungsi eval()

Sahkan dan tapis input untuk mengelakkan suntikan kod hasad

    Elakkan menggunakan pembolehubah interpolasi dalam fungsi eval(), kerana pembolehubah interpolasi mungkin mengandungi kod hasad
  • Gunakan fungsi json_decode() untuk menukar
  • Untuk mengelakkan isu keselamatan yang disebabkan oleh fungsi eval(), kita boleh menggunakan json_decode dalam fungsi PHP () menukar rentetan kurung ke dalam tatasusunan. Fungsi json_decode() boleh menghuraikan rentetan berformat JSON dan menukarnya kepada tatasusunan atau objek PHP. Walaupun rentetan pendakap bukanlah format JSON standard, kerana ia sangat serupa dengan format JSON, kita boleh menukarnya menjadi rentetan format JSON dan kemudian menghuraikannya menggunakan fungsi json_decode(). Kod khusus adalah seperti berikut:
    Hasil pelaksanaan kod adalah sama seperti menggunakan fungsi eval():
Ringkasan

Dalam ini artikel, kami memperkenalkan Bagaimana untuk menukar rentetan pendakap kepada tatasusunan dalam PHP. Disebabkan isu keselamatan dengan fungsi eval(), kami mengesyorkan menggunakan fungsi json_decode() untuk penukaran. Tidak kira kaedah yang anda gunakan, anda harus memberi perhatian kepada keselamatan semasa mengendalikan rentetan pendakap.
$str = "{ 'name': 'John', 'age': 25, 'city': 'New York' }";

// 将单引号转义为双引号
$json = str_replace("'", "\"", $str);

// 将字符串转换成JSON格式的字符串
$json_str = str_replace(" ", "", $json);

// 使用json_decode()函数解析JSON字符串
$arr = json_decode($json_str, true);

print_r($arr);
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk menukar rentetan braced kepada array dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan