通过php/regex删除utm源代码

通过php/regex删除utm源代码,php,regex,Php,Regex,大家好 在上面的代码示例中,如何通过PHP/Regex从URL中删除UTM跟踪 PHP新手,请解释您的答案 提前谢谢 编辑:稍微靠近了一点,但仍然有错误 <?php $before='http://www.urchin.com/download.html? utm_source=google&utm_medium=email&utm_campaign=product'; $after = preg_replace('[?]utm_source=.*/','', $b

大家好

在上面的代码示例中,如何通过PHP/Regex从URL中删除UTM跟踪

PHP新手,请解释您的答案

提前谢谢

编辑:稍微靠近了一点,但仍然有错误

<?php
$before='http://www.urchin.com/download.html? utm_source=google&utm_medium=email&utm_campaign=product';
    $after = preg_replace('[?]utm_source=.*/','', $before);
 echo $after;
?>
你可以阅读更多关于斯特托克的信息

更新:如果只需要删除utm参数,可以使用正则表达式,例如:

$url = strtok($url, '?');

注意:此正则表达式将从URL中删除任何utm参数。

使用strtok获取您想要的URL

$url = preg_replace( '/&?utm_.+?(&|$)$/', '', $url );
发现:

$url = strtok($url, '?');

以下是如何从URL中删除所有UTM参数(包括哈希UTM参数)的解决方案:

<?php
$before='http://www.urchin.com/download.html?utm_source=google&utm_medium=email&utm_campaign=product';
 $after = preg_replace('/[?]utm_source=.*/','', $before);
 echo $after;

?>

谢谢它可以工作,但也可以在所有URL上工作,在哪里?是的,谢谢。。它可以工作,但也可以在所有URL上工作,在哪里?请参阅我的最新答案。如果您找到了解决方案,请接受任何答案。如果url在实际查询参数之前包含utm_u,则此选项也将被删除。
<?php

$urls = [
    'https://www.someurl.com/?utm_medium=flow&red=true&article_id=5456#omg&utm_medium=email',
    'https://www.someurl.com/#utm_medium=flow&utm_medium=email',
    'https://www.someurl.com/?articleid=1235&utm_medium=flow&utm_medium=email',
    'https://www.someurl.com/?utm_medium=flow&articleid=1235&utm_medium=email',
    'https://www.someurl.com/?utm_medium=encoding%20space%20works&encoding=works%20also'
];

foreach ($urls as $url) {
    echo rtrim(preg_replace('/utm([_a-z0-9=%]+)\&?/', '', $url), '&?#') . PHP_EOL;
}