首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从该字符串格式获取子字符串

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

Stack Overflow用户
提问于 2016-07-27 02:03:40
回答 1查看 50关注 0票数 0

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

案例1:

代码语言:javascript
运行
复制
"afield1" : "something1", "credentials" : [] , "afield2" : "something2" 

案例2:

代码语言:javascript
运行
复制
"afield1" : "something1", "credentials" : [ ["root", "toor"] ] , "afield2" = "something2"

案例3:

代码语言:javascript
运行
复制
"afield1" : "something1", "credentials" : [ [ "admin", "support" ], [
"admin", "password" ], [ "admin", "123321" ] ] , "afield2" : "something2"

如何获取用户名和密码?

编辑:

我在第一个案例中找到了一个愚蠢的方法..但是其他人太复杂了.它既不能在逗号(,)上爆炸,也不能在braket ()上爆炸...如果某些东西知道如何爆炸、校正或从该东西中获取值,请提供帮助……

EN

Stack Overflow用户

回答已采纳

发布于 2016-07-27 03:05:19

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

代码语言:javascript
运行
复制
$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);

在输出中你可以看到

代码语言:javascript
运行
复制
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"
  }
}

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

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38596932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档