Php 如何转换谷歌标签管理器';将初始流量源cookie值添加到数组?
我已经使用UTMZ cookie Replicator的一些第三方代码为Google Tag Manager安装了一个“cookie creating”代码。它设置cookie并开始为访问网站的用户收集初始流量源。我的网站是 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',
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]=>未设置)
不清楚如何从数组中获取值,因为它会打印出整个创建的数组,但如何单独获取数组的值?