2013-04-18 50 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