如何从 PHP 中的链接中删除跟踪代码



嗨,我在WordPress中有一个表单,用户可以在其中提交指向产品的链接,但链接通常带有不必要的包袱,例如跟踪代码。我想在WordPress中创建一个过滤器并清理链接,以便它们仅包含一个工作链接。如果可能的话,我想确认链接仍然有效,或者确认链接仍然有效的方法。

我想在链接中删除的主要内容是utm_source及其内容,utm_medium和内容等,除了干净的工作链接之外的所有内容。

例如,像这样的链接: https://www.serenaandlily.com/variationproduct?dwvar_m10055_size=Twin&dwvar_m10055_color=Chambray&pid=m10055&pdp=true&source=detail&utm_source=affiliate&utm_medium=affiliate&utm_campaign=pjdatafeed&publisherId=20648&clickId=2669312134#fo_c=745&fo_k=c0ebaf8359ca7853df8343e535533280&fo_s=pepperjam

最终会这样:

https://www.serenaandlily.com/variationproduct?dwvar_m10055_size=Twin&dwvar_m10055_color=Chambray&pid=m10055

如果有人能带领我朝着正确的方向前进,我将不胜感激。

谢谢!

你可以

explodeparse_strhttp_build_query做你想做的事。此代码使用不需要的参数数组来决定要从查询字符串中删除的内容:

$unwanted_params = array('utm_source', 'utm_medium', 'utm_campaign', 'clickId', 'publisherId', 'source', 'pdp', 'details', 'fo_k', 'fo_s');
$url = 'https://www.serenaandlily.com/variationproduct?dwvar_m10055_size=Twin&dwvar_m10055_color=Chambray&pid=m10055&pdp=true&source=detail&utm_source=affiliate&utm_medium=affiliate&utm_campaign=pjdatafeed&publisherId=20648&clickId=2669312134#fo_c=745&fo_k=c0ebaf8359ca7853df8343e535533280&fo_s=pepperjam';
list($path, $query_string) = explode('?', $url, 2);
// parse the query string
parse_str($query_string, $params);
// delete unwanted parameters
foreach ($unwanted_params as $p) unset($params[$p]);
// rebuild the query
$query_string = http_build_query($params);
// reassemble the URL
$url = $path . '?' . $query_string;
echo $url;

输出:

https://www.serenaandlily.com/variationproduct?dwvar_m10055_size=Twin&dwvar_m10055_color=Chambray&pid=m10055

3v4l.org 演示

你可以在 PHP 本身中执行此操作。有一个名为parse_url()(https://secure.php.net/manual/en/function.parse-url.php(的函数,它可以将所有URI参数作为数组提供。解析后,您可以过滤参数,删除不需要的。最后,使用 http_build_query() (https://secure.php.net/manual/en/function.http-build-query.php( 构建字符串 URI 以返回:)

最新更新