我有一个字符串传递给广告系列来源,如下所示:
/?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)并停止过去我想要的(&amp;)等等但我不喜欢我不太了解preg_match这样做。
答案 0 :(得分: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/>
)