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 に答える