Php 如何使用preg_match_all查找所有值

Php 如何使用preg_match_all查找所有值,php,Php,我有一个复杂的数据字符串,我想让它变得简单,我的复杂字符串如下所示 {"status":true,"object":{"team1":{"teamId":"115927","name":"United CC","shortName":"UCC","logoImage":"https:\/\/cricket.entitysport.com\/assets\/uploads\/2020\/06\/ucc-120x120.png","players":[{"playersId":"99237","fi

我有一个复杂的数据字符串,我想让它变得简单,我的复杂字符串如下所示

{"status":true,"object":{"team1":{"teamId":"115927","name":"United CC","shortName":"UCC","logoImage":"https:\/\/cricket.entitysport.com\/assets\/uploads\/2020\/06\/ucc-120x120.png","players":[{"playersId":"99237","firstName":"Abhimanyu Singh","middleName":"","lastName":"","title":"Abhimanyu Singh","shortName":"Abhimanyu Singh","country":"fi","photo":"","role":"wk","ply_fantasy_points":"0","points":"26.50","playing11":"1"},{"playersId":"99239","firstName":"Shyamal Joshi","middleName":"","lastName":"","title":"Shyamal Joshi","shortName":"Shyamal Joshi","country":"fi","photo":"","role":"bat","ply_fantasy_points":"0","points":"9.00","playing11":"1"},{"playersId":"99244","firstName":"Pramod Bagauly","middleName":"","lastName":"","title":"Pramod Bagauly","shortName":"Pramod Bagauly","country":"fi","photo":"","role":"all","ply_fantasy_points":"0","points":"19.50","playing11":"1"},{"playersId":"99245","firstName":"Neelesh Pandit","middleName":"","lastName":"","title":"Neelesh Pandit","shortName":"Neelesh Pandit","country":"fi","photo":"","role":"all","ply_fantasy_points":"0","points":"10.00","playing11":"1"},{"playersId":"99247","firstName":"Kumal Deshmukh","middleName":"","lastName":"","title":"Kumal Deshmukh","shortName":"Kumal Deshmukh","country":"fi","photo":"","role":"all","ply_fantasy_points":"0","points":"2.00","playing11":"1"},{"playersId":"99249","firstName":"Arpan Shukia","middleName":"","lastName":"","title":"Arpan Shukia","shortName":"Arpan Shukia","country":"fi","photo":"","role":"bowl","ply_fantasy_points":"0","points":"11.00","playing11":"1"},{"playersId":"99251","firstName":"Amit Pangarkar","middleName":"","lastName":"","title":"Amit Pangarkar","shortName":"Amit Pangarkar","country":"fi","photo":"","role":"bowl","ply_fantasy_points":"0","points":"2.00","playing11":"1"}]},"team2":{"teamId":"115929","name":"Prague CC Kings","shortName":"PCC","logoImage":"https:\/\/cricket.entitysport.com\/assets\/uploads\/2020\/06\/pcck-120x120.png","players":[{"playersId":"99292","firstName":" Ramakrishnan ","middleName":"","lastName":"Sundareswaran","title":"Sharan Ramakrishnan Sundareswaran","shortName":"Sharan ","country":"fi","photo":"","role":"bat","ply_fantasy_points":"0","points":"0.00","playing11":"1"},{"playersId":"99293","firstName":"Arun Ashokan","middleName":"","lastName":"","title":"Arun Ashokan","shortName":"Arun Ashokan","country":"fi","photo":"","role":"bat","ply_fantasy_points":"0","points":"33.00","playing11":"1"},{"playersId":"99295","firstName":"Prakash Sadasivan","middleName":"","lastName":"","title":"Prakash Sadasivan","shortName":"Prakash Sadasivan","country":"fi","photo":"","role":"all","ply_fantasy_points":"0","points":"14.50","playing11":"1"},{"playersId":"99296","firstName":"Martin Glew","middleName":"","lastName":"","title":"Martin Glew","shortName":"Martin Glew","country":"fi","photo":"","role":"all","ply_fantasy_points":"0","points":"16.00","playing11":"1"}]},"userTeamId":"4444","matchId":"4343","earnPoints":"6.50","teamNumber":"1","captainId":"99239","viceCaptainId":"99247","isLineup":1},"message":"players","errCode":"11111"}
我正在尝试将所有球队id和所有球员id设置为一个简单的字符串格式

 {"115927":[99222,99224,99226,99228,99230,99233],"115929":[99257,99264,99265,99266,99268]}

我尝试了许多类型的preg_match_all函数,但它不起作用。有没有办法用preg_match_all或任何其他函数来实现这一点呢

相反,使用json_decode可以在PHP中将json作为数组处理,并将其重新构造为所需的格式

<?php
$json = '{"status":true,"object":{"team1":{"teamId":"115927","name":"United CC","shortName":"UCC","logoImage":"https:\/\/cricket.entitysport.com\/assets\/uploads\/2020\/06\/ucc-120x120.png","players":[{"playersId":"99237","firstName":"Abhimanyu Singh","middleName":"","lastName":"","title":"Abhimanyu Singh","shortName":"Abhimanyu Singh","country":"fi","photo":"","role":"wk","ply_fantasy_points":"0","points":"26.50","playing11":"1"},{"playersId":"99239","firstName":"Shyamal Joshi","middleName":"","lastName":"","title":"Shyamal Joshi","shortName":"Shyamal Joshi","country":"fi","photo":"","role":"bat","ply_fantasy_points":"0","points":"9.00","playing11":"1"},{"playersId":"99244","firstName":"Pramod Bagauly","middleName":"","lastName":"","title":"Pramod Bagauly","shortName":"Pramod Bagauly","country":"fi","photo":"","role":"all","ply_fantasy_points":"0","points":"19.50","playing11":"1"},{"playersId":"99245","firstName":"Neelesh Pandit","middleName":"","lastName":"","title":"Neelesh Pandit","shortName":"Neelesh Pandit","country":"fi","photo":"","role":"all","ply_fantasy_points":"0","points":"10.00","playing11":"1"},{"playersId":"99247","firstName":"Kumal Deshmukh","middleName":"","lastName":"","title":"Kumal Deshmukh","shortName":"Kumal Deshmukh","country":"fi","photo":"","role":"all","ply_fantasy_points":"0","points":"2.00","playing11":"1"},{"playersId":"99249","firstName":"Arpan Shukia","middleName":"","lastName":"","title":"Arpan Shukia","shortName":"Arpan Shukia","country":"fi","photo":"","role":"bowl","ply_fantasy_points":"0","points":"11.00","playing11":"1"},{"playersId":"99251","firstName":"Amit Pangarkar","middleName":"","lastName":"","title":"Amit Pangarkar","shortName":"Amit Pangarkar","country":"fi","photo":"","role":"bowl","ply_fantasy_points":"0","points":"2.00","playing11":"1"}]},"team2":{"teamId":"115929","name":"Prague CC Kings","shortName":"PCC","logoImage":"https:\/\/cricket.entitysport.com\/assets\/uploads\/2020\/06\/pcck-120x120.png","players":[{"playersId":"99292","firstName":" Ramakrishnan ","middleName":"","lastName":"Sundareswaran","title":"Sharan Ramakrishnan Sundareswaran","shortName":"Sharan ","country":"fi","photo":"","role":"bat","ply_fantasy_points":"0","points":"0.00","playing11":"1"},{"playersId":"99293","firstName":"Arun Ashokan","middleName":"","lastName":"","title":"Arun Ashokan","shortName":"Arun Ashokan","country":"fi","photo":"","role":"bat","ply_fantasy_points":"0","points":"33.00","playing11":"1"},{"playersId":"99295","firstName":"Prakash Sadasivan","middleName":"","lastName":"","title":"Prakash Sadasivan","shortName":"Prakash Sadasivan","country":"fi","photo":"","role":"all","ply_fantasy_points":"0","points":"14.50","playing11":"1"},{"playersId":"99296","firstName":"Martin Glew","middleName":"","lastName":"","title":"Martin Glew","shortName":"Martin Glew","country":"fi","photo":"","role":"all","ply_fantasy_points":"0","points":"16.00","playing11":"1"}]},"userTeamId":"4444","matchId":"4343","earnPoints":"6.50","teamNumber":"1","captainId":"99239","viceCaptainId":"99247","isLineup":1},"message":"players","errCode":"11111"}';

// turn this into an array
$array = json_decode($json, true);

$formatted = [];

foreach ($array['object'] as $team) {
    $teamId = $team['teamId'];

    foreach ($team['players'] as $player) {
        $formatted[$teamId][] = $player['playersId'];
    }
}

// $formatted now contains the format {teamId: [player1, player2], team2: [player3, player4]}
echo json_encode($formatted);

您可以循环并提取所有玩家:

foreach(json_decode($json, true)['object'] as $team) {
    if(isset($team['teamId'])) {
        $result[$team['teamId']] = array_column($team['players'], 'playersId');
    }
}

你会考虑使用,这样你可以操纵一个数组,或者你必须通过ReXE/PREGGY函数来完成它吗?先生,你能简单地帮助我做吗?请不要放弃问题中的解决技术(PrggMatMatHyALL可能不是解决方案)你放弃了吗?