通过php / regex删除utm源代码

时间:2015-07-27 08:07:53

标签: php regex

<?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;
?>

大家好,

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

PHP新手,请解释一下你的答案。

提前致谢!

编辑:离得更近但仍然出错。

4 个答案:

答案 0 :(得分:2)

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

您可以详细了解strtok here

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

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

注意:此正则表达式会从您的网址中删除所有utm_参数。

答案 1 :(得分:0)

使用strtok获取您喜欢的网址

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

答案 2 :(得分:0)

想通了:

<?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;

?>

答案 3 :(得分:0)

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

<?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;
}