如何将数据表单链接覆盖到php中的另一个链接

问题描述 投票:0回答:1

你好,我想覆盖从旧链接到新链接的所有参数..喜欢

$oldURl="https://example.com/abcd/data?p=123&x=ABCDSS";

$newUrl="https://example.com/?data=1&data2=2&data3=3";

// $fnialurl=rewrite_data($oldURl,$newUrl);

我想要的最终结果..

https://example.com/abcd/data?data=1&data2=2&data3=3&p=123&x=ABCDSS

您有任何想法从旧网址获取路径和请求并将其替换为新网址

php post request get deep-linking
1个回答
0
投票

我想你可以使用

parse_url
来实现这一点。循环您想要加入的所有 url,组合它们的所有路径和查询,然后在最后再次输出它们 - 它们需要按照您想要加入它们的顺序传递,但是在此示例中需要相同的主机,但它应该让你开始吧。

function rewrite_data(string ...$urls): string
{
    $paths = [];
    $queries = [];
    $key = parse_url(current($urls));
    
    foreach ($urls as $url)
    {
        $parsedUrl = parse_url($url);
        $paths[] = $parsedUrl['path'] ?? null;
        $queries[] = $parsedUrl['query'] ?? null;
    }
    
    [$paths, $queries] = [array_filter($paths, fn($x) => $x && $x !== '/'), array_filter($queries)];
    
    return sprintf('%s://%s%s?%s', $key['scheme'], $key['host'], implode('/', $paths), implode('&', $queries));
}

您的示例中的用法是:

# output: https://example.com/abcd/data?data=1&data2=2&data3=3&p=123&x=ABCDSS
rewrite_data('https://example.com/?data=1&data2=2&data3=3', 'https://example.com/abcd/data?p=123&x=ABCDSS');

3v4l.org

上查看它的运行情况
© www.soinside.com 2019 - 2024. All rights reserved.