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

时间:2018-04-08 23:27:53

标签: php preg-replace

以下是两个链接:

  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
  3. 我想在链接1中提取562858877982中“id”的值,然后将链接2中“id”的值替换为链接1中的值。

    所以链接2看起来像这样:
    https://item.example.com/item.htm?spm=a230r.1.14.33.a8e813ceFcDRaX&id=562858877982&ns=1&abbucket=9

    请注意,链接1中的id是动态的,这意味着它可以是任何数字。所以任务是得到“id”的值,而不是上面的例子id。

1 个答案:

答案 0 :(得分:0)

您可以使用explodeparse_str,而不是parse_url;

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

当您的ID可以是任意数字时,要显示sprintf%d的链接。

$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