Saya memiliki data berikut dan saya dapat memiliki 3 kasus berbeda:
Kasus 1:
"afield1" : "something1", "credentials" : [] , "afield2" : "something2"
Kasus 2:
"afield1" : "something1", "credentials" : [ ["root", "toor"] ] , "afield2" = "something2"
Kasus 3:
"afield1" : "something1", "credentials" : [ [ "admin", "support" ], [
"admin", "password" ], [ "admin", "123321" ] ] , "afield2" : "something2"
Bagaimana saya bisa mendapatkan nama pengguna dan kata sandi?
Sunting:
Saya menemukan cara konyol untuk kasus pertama.. Tetapi yang lain sangat sesuai.. Itu tidak dapat diledakkan baik pada koma (,) atau braket ([ ]) ... Bantuan jika ada yang tahu cara meledak yang benar atau dapatkan nilai dari hal itu...
0
J doe
26 Juli 2016, 21:03
1 menjawab
Jawaban Terbaik
Anda dapat menggunakan fungsi preg_match
dan preg_match_all
seperti dalam kode ini
$credentials = [];
$text = '"afield1" = "something1", "credentials" : [ [ "admin", "support" ], ["admin", "pass]word" ], [ "admin", "123321" ] ] , "afield2" = "something2"';
preg_match('/"credentials" : \[(.*?)\] ,/i', $text, $matches);
preg_match_all('/\[[ ]?"(.*?)"[ ]?\]/i', $matches[1], $matches2);
foreach ($matches2[1] as $match) {
preg_match_all('/"(.*?)"/i', '"' . $match . '"', $matches3);
$credential = ['login' => $matches3[1][0], 'password' => $matches3[1][1]];
$credentials[] = $credential;
}
var_dump($credentials);
Pada ouptut Anda dapat melihat
array(3) {
[0]=>
array(2) {
["login"]=>
string(5) "admin"
["password"]=>
string(7) "support"
}
[1]=>
array(2) {
["login"]=>
string(5) "admin"
["password"]=>
string(8) "pass]word"
}
[2]=>
array(2) {
["login"]=>
string(5) "admin"
["password"]=>
string(6) "123321"
}
}
Kode ini berfungsi dengan benar untuk sampel lain dari pertanyaan Anda.
0
zajonc
26 Juli 2016, 22:20
Namun, kode inti yang jauh lebih keras dapat dipecah menjadi beberapa bagian karena afield2 selalu ada di sana.. Jadi, jika Anda meledakkan 3 bagian kredensial dan setelah itu meledak lagi dan lagi berdasarkan ],[ dan [ dan ] itu akan bekerja juga.
– J doe
27 Juli 2016, 01:03
Atau Anda bisa menggunakan
– json_decode
seperti yang telah ditunjukkan beberapa kali.
Sean Bright
27 Juli 2016, 18:27
json