0

我有一个通过活动源传递的字符串,如下所示:

/?source=SEARCH%20&utm_source=google&utm_medium=cpc&utm_term=<keyword/>&utm_content={creative}&utm_campaign=<campaign/>&cpao=111&cpca=<campaign/>&cpag=<group/>&kw=<mpl/>

当它出现时,我需要将其剪切并将其传递给我们的表单处理程序,以便我们可以跟踪我们的活动。我可以检查它,将其内容保存在 cookie 中并将其传递到我们的整个站点,但我正在使用 preg_match 将其剪切并将其放入变量中,以便我可以将它们的值传递给处理程序。我希望最终产品看起来像:

$utm_source=google;
$utm_medium=cpc;
$utm_term=<keyword/>

没有固定数量的字符,可能是 Google、Bing 等,所以我尝试使用 preg_match 来获取第一部分(utm_source)并停止我想要的(&)等等,但我不明白 preg_match足以做到这一点。

4

1 回答 1

2

PHP 应该为您解析您的查询字符串,并将其转换为$_GET. 否则,PHP 知道如何解析查询字符串。不要使用正则表达式,或者为此,使用parse_str.

输入:

<?php

$str = "/?source=SEARCH%20&utm_source=google&utm_medium=cpc&utm_term=<keyword/>&utm_content={creative}&utm_campaign=<campaign/>&cpao=111&cpca=<campaign/>&cpag=<group/>&kw=<mpl/>";

$ar = array();
parse_str($str, $ar);
print_r($ar);

输出:

Array
(
    [/?source] => SEARCH
    [utm_source] => google
    [utm_medium] => cpc
    [utm_term] => <keyword/>
    [utm_content] => {creative}
    [utm_campaign] => <campaign/>
    [cpao] => 111
    [cpca] => <campaign/>
    [cpag] => <group/>
    [kw] => <mpl/>
)
于 2013-04-18T18:08:42.330 回答