合并 2 preg_match_all 在一起

merge 2 preg_match_all together

我试图在 JSON 的 API 回复中找到标签的名称和图片 PHP,我已经设法让 preg_match_all 找到 src 属性,但我正在努力让它为图像的相应名称工作,这是我的 JSON 作为字符串的响应

$string = '"<br><div id=\"sticker_info\" name=\"sticker_info\" title=\"Sticker Details\" style=\"border: 2px solid rgb(102, 102, 102); border-radius: 6px; width=100; margin:4px; padding:8px;\"><center><img width=64 height=48 src=\"https:\/\/steamcdn-a.akamaihd.net\/apps\/730\/icons\/econ\/stickers\/cologne2016\/sig_pasha.9f41c874350c06e9a902bea06a5228ceccb25ee1.png\"><img width=64 height=48 src=\"https:\/\/steamcdn-a.akamaihd.net\/apps\/730\/icons\/econ\/stickers\/cluj2015\/vp.5cc950372e0c448d2ff958b7ce13fd907bcd2ace.png\"><br>Sticker: pashaBiceps | Cologne 2016, Virtus.Pro | Cluj-Napoca 2015<\/center><\/div>"';

我们已经使用

成功获取了 img src
preg_match_all('@src="([^"]+)"@', $string, $matches);
$arr = array_pop($matches);

这将是 return 一个简单的数组:

[
    "https://steamcdn-a.akamaihd.net/apps/730/icons/econ/stickers/cologne2016/sig_pasha.9f41c874350c06e9a902bea06a5228ceccb25ee1.png", 
    "https://steamcdn-a.akamaihd.net/apps/730/icons/econ/stickers/cluj2015/vp.5cc950372e0c448d2ff958b7ce13fd907bcd2ace.png"
]    

我试图让它也显示图像的项目名称,它们按顺序仅以逗号分隔,以某种方式获得如下数组:

[
    [
        'src' => 'https://steamcdn-a.akamaihd.net/apps/730/icons/econ/stickers/cologne2016/sig_pasha.9f41c874350c06e9a902bea06a5228ceccb25ee1.png',
        'name' => 'pashaBiceps | Cologne 2016'
    ],
    [
        'src' => 'https://steamcdn-a.akamaihd.net/apps/730/icons/econ/stickers/cluj2015/vp.5cc950372e0c448d2ff958b7ce13fd907bcd2ace.png',
        'name' => 'Virtus.Pro | Cluj-Napoca 2015'
    [
]

你可以从$string中看到图像也与Stickers:文本按顺序排列,我只是不知道如何在不执行的情况下将它们合并肮脏 黑客

一种方法是:

  1. 将名称分别提取为字符串
  2. 将这个字符串分解成一个数组
  3. 解析 src 和名称数组并将值推入组合数组。

代码如下:

// Extract URLs and store them in an array
preg_match_all('@src="([^"]+)"@', $string, $matches);
$matches = array_pop($matches);

// Extract the names as a string and break it down into an array
preg_match('@Sticker\: ([^<]+)<\/center>@', $string, $matches2);
$matches2 = array_pop($matches2);
$matches2 = explode(', ', $matches2);

// Combine the two arrays
$combinedArr = array();
$numItems = count($matches);
for ($i = 0; $i < $numItems; ++$i) {
  $combinedArr[] = array('src' => $matches[$i], 'name' => $matches2[$i]);
}

print_r($combinedArr);

$combinedArr 将包含:

Array
(
    [0] => Array
        (
            [src] => https://steamcdn-a.akamaihd.net/apps/730/icons/econ/stickers/cologne2016/sig_pasha.9f41c874350c06e9a902bea06a5228ceccb25ee1.png
            [name] => pashaBiceps | Cologne 2016
        )
    [1] => Array
        (
            [src] => https://steamcdn-a.akamaihd.net/apps/730/icons/econ/stickers/cluj2015/vp.5cc950372e0c448d2ff958b7ce13fd907bcd2ace.png
            [name] => Virtus.Pro | Cluj-Napoca 2015
        )
)