从该字符串格式中获取子字符串


Get substrings from that string format

我有以下数据,我可以有3种不同的情况:

案例1:

"afield1" : "something1", "credentials" : [] , "afield2" : "something2" 

案例2:

"afield1" : "something1", "credentials" : [ ["root", "toor"] ] , "afield2" = "something2"

案例3:

"afield1" : "something1", "credentials" : [ [ "admin", "support" ], [
"admin", "password" ], [ "admin", "123321" ] ] , "afield2" : "something2"

如何获取用户名和密码?

编辑:

我为第一个案子找到了一个愚蠢的方法。。但其他人是如此复杂。。它既不能在逗号(,)上也不能在bracket([])上分解。。。如果某个东西知道如何爆炸更正或从中获取值,请提供帮助。。。

您可以使用preg_matchpreg_match_all函数,如以下代码中所示

$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);

在ouptut上你可以看到

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"
  }
}

此代码对您问题中的其他示例正常工作。