2013-04-18 51 views
0

我有一个字符串通过类似如下的活动源传递:的preg_match

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

有字符没有定数,也可能是谷歌,必应等,所以我试图用的preg_match拿到第一部分(utm_source)并停止过去我想要什么(&)等,但我不明白preg_match足够做到这一点。

+1

岂不是可以使用'explode'上'&',以获得零件,然后爆炸在每个部件''=获得钥匙和价值? – andrewsi

+0

@andrewsi绝对不要这样做。 PHP知道如何解析查询字符串。 – meagar

+0

发布一些您尝试作为第一次尝试的代码。无论它有多糟糕都没关系。然后人们可以参考特定变量和行号来帮助您修改。 – Zak

回答

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/> 
) 
+0

呵呵。我甚至不知道这个功能是否存在。感谢那! – andrewsi