Php 如何转换谷歌标签管理器';将初始流量源cookie值添加到数组?

Php 如何转换谷歌标签管理器';将初始流量源cookie值添加到数组?,php,arrays,cookies,google-tag-manager,Php,Arrays,Cookies,Google Tag Manager,我已经使用UTMZ cookie Replicator的一些第三方代码为Google Tag Manager安装了一个“cookie creating”代码。它设置cookie并开始为访问网站的用户收集初始流量源。我的网站是 cookie名称为InitialTrafficSource,返回的值为 utmcsr=(direct)|utmcmd=(none)|utmccn=(not set) 如何获取cookie返回的字符串值并将其转换为某种PHP代码,例如: $utmcsr= 'direct',

我已经使用UTMZ cookie Replicator的一些第三方代码为Google Tag Manager安装了一个“cookie creating”代码。它设置cookie并开始为访问网站的用户收集初始流量源。我的网站是

cookie名称为
InitialTrafficSource
,返回的值为

utmcsr=(direct)|utmcmd=(none)|utmccn=(not set)
如何获取cookie返回的字符串值并将其转换为某种PHP代码,例如:

$utmcsr= 'direct',
$utmcmd= 'none',
$utmccn= 'not set',

有很多方法可以做到这一点,我想知道你为什么不尝试一种(例如使用基本的字符串函数)

具有基本功能:

$str = 'utmcsr=(direct)|utmcmd=(none)|utmccn=(not set)';

$result = [];

foreach (explode('|', $str) as $item) {
    list($key, $val) = explode('=', $item);
    $result[$key] = trim($val, '()');
}

print_r($result);

拆分
|
上的字符串并使用格式化字符串提取每个项的键/值的方法:

$str = 'utmcsr=(direct)|utmcmd=(none)|utmccn=(not set)';

$format = '%[^=]=(%[^)])';
$result = [];

foreach (explode('|', $str) as $v) {
    [$key, $result[$key]] = sscanf($v, $format);
}

print_r($result);

以功能性方式编写相同的文件:

$result = array_reduce(explode('|', $str), function ($c, $i) {
    [$key, $c[$key]] = sscanf($i, '%[^=]=(%[^)]');
    return $c;
}, []);

使用正则表达式:

$str = 'utmcsr=(direct)|utmcmd=(none)|utmccn=(not set)';

preg_match_all('~ (?<key> [^|=]+ ) = \( (?<val> [^)]* ) \) ~x', $str, $matches);

$result = array_combine($matches['key'], $matches['val']);

print_r($result);
$str='utmcsr=(直接)| utmcmd=(无)| utmccn=(未设置)';
preg_match_all(“~(?[^=)+)=\((?[^)]*)\)~x',$str,$matches);
$result=array_combine($matches['key'],$matches['val']);
打印(结果);

代码的结果是:
数组([utmcsr]=>direct[utmcmd]=>none[utmccn]=>未设置)
不清楚如何从数组中获取值,因为它会打印出整个创建的数组,但如何单独获取数组的值?