如何使用 preg_replace 查找和替换 link 中的单词

How to use preg_replace to find and replace words in the link

这是两个 link:

  1. https://m.intl.example.com/detail/detail.html?id=562858877982&abtest=8&rn=ab2d6eacbccdbd3d59b70b38f26c496d&sid=403ef38782392a0c5298d9d7278d9005
  2. https://item.example.com/item.htm?spm=a230r.1.14.33.a8e813ceFcDRaX&id=522804915538&ns=1&abbucket=9

我想把"id" in link 1的值提取出来就是562858877982,然后把"id"的值替换成link 2 和 link 1 中的那个。

因此 link 2 将如下所示:
https://item.example.com/item.htm?spm=a230r.1.14.33.a8e813ceFcDRaX&id=562858877982&ns=1&abbucket=9

请注意,来自 link 1 的 ID 是动态的,这意味着它可以是任何数字。所以任务是获取 "id" 的值而不是上面的示例 id.

而不是使用 explode you could use parse_str and parse_url;

如果您将数组作为 parse_str 的第二个参数传递,您可以使用 id 作为数组键来获取 ID $result["id"]

要显示 link 您可以使用 sprintf%d 当您的 ID 可以是任何数字时。

$url = "https://m.intl.example.com/detail/detail.html?id=562858877982&abtest=8&rn=ab2d6eacbccdbd3d59b70b38f26c496d&sid=403ef38782392a0c5298d9d7278d9005";
$result = [];
parse_str(parse_url($url, PHP_URL_QUERY), $result);
echo sprintf(
    "https://item.example.com/item.htm?spm=a230r.1.14.33.a8e813ceFcDRaX&id=%d&ns=1&abbucket=9",
    $result["id"]
);

Demo Php