0

我有带有 piwik 访问者数据的数据库。Piwik 在仪表板中的关键字旁边显示关键字位置,但此值未保存在数据库中。Piwik 通过在谷歌引荐来源网址中搜索“cd =”值来动态显示位置,该值是给定关键字的关键字位置。

我想在我的面板中做同样的事情。

我从 google 获取所有引用 url,而不是通过 & 符号来分解它们。

我遇到的问题是一些 url 字符串包含 cd= 作为第 4 个键和一些作为第 5 个键。

如何从这样的数组中查找和打印所有 cd= 值?:

Array
(
    [0] => http://www.google.com/url?sa=t
    [1] => rct=j
    [2] => q=keyword%20one
    [3] => source=web
    [4] => cd=1
    [5] => ved=0CC0QFjAA
    [6] => url=http%3A%2F%2Fwww.domain.com%2F
    [7] => ei=RqmrUbP0Muf1igKr_4GYAQ
    [8] =>
)



Array
(
    [0] => http://www.google.com.au/url?sa=t
    [1] => rct=j
    [2] => q=
    [3] => esrc=s
    [4] => source=web
    [5] => cd=3
    [6] => ved=0CDUQFjAC
    [7] => url=http%3A%2F%2Fwww.domain.com%2F
    [8] => ei=2nKsUbTYB8m3rgfNtoC4DA
    [9] => usg=AFQjCNEQgdDpqHBsfjeEBKoyKONAG-pepg
    [10] => bvm=bv.47244034,d.bmk
    [11] => cad=rja
)

谢谢

4

4 回答 4

2

&我建议不要拆分,而是使用parse_urlandparse_str

$parts = parse_url($url);
$query = array();
parse_str($parts["query"], $query);

然后您可以使用访问“cd”值

$query["cd"];
于 2013-06-14T15:55:29.527 回答
0

烦人的命名parse_str解析查询字符串,可以代替使用:

$args = parse_str($queryStr);
$cd = $args['cd'];
于 2013-06-14T15:56:14.437 回答
0

您应该使用 php 函数array_search。来自官方文档

array_search — 在数组中搜索给定的值,如果成功则返回相应的键

mixed array_search ( mixed $needle , array $haystack [, bool $strict = false ] )

例子:

<?php
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');

$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array);   // $key = 1;
?>
于 2013-06-14T15:58:32.510 回答
0

由于您的值存储在键 4 或键 5 $explode_array = explode('=', arr[4]); 或 $explode_array = explode('=', arr[5]);

if(($explode_array[0] == 'cd') && is_numeric($explode_array[1])) echo "CD value = ".$explode_array[1];

于 2013-06-14T15:59:10.317 回答