2013-06-14 9 views
0

У меня есть база данных с данными посетителя piwik. Piwik показывает ключевые слова рядом с ключевыми словами на панели управления, но это значение не сохраняется в базе данных. Piwik динамически показывает позиции путем поиска URL-адреса google referrer для значения «cd =», которое является ключевым словом для данного ключевого слова.Найти и распечатать значение детали в массиве

Я хотел был бы сделать то же самое в моей панели.

Я получаю все ссылки на URL-адреса Google и их взломать по знаку &.

Проблема У меня есть то, что некоторые строки URL содержат cd = как 4-й ключ, а некоторые - 5-й.

Как найти и распечатать все кд = значения из массивов как что ?:

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 
) 

Благодарности

ответ

2

Вместо spliting по & я предложил бы использовать parse_url и parse_str

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

Затем вы можете получить доступ к значениям «cd», используя

$query["cd"]; 
+0

Спасибо, что сработали отлично !! – Chriser

0

раздражающе имя parse_str разбирают строки запроса и могут быть использованы вместо:

$args = parse_str($queryStr); 
$cd = $args['cd']; 
0

Вы должны использовать функцию PHP array_search. От official documentation:

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; 
?> 
+0

Это не работает, так как значение массива не просто 'cd', а' cd = someValue', поэтому 'array_search' не найдет соответствующий ключ. – Jim

0

Поскольку ваше значение хранится в ключе 4 или клавише 5 $ explode_array = explode ('=', arr [4]); OR $ explode_array = explode ('=', arr [5]);

, если (($ explode_array [0] == 'CD') & & is_numeric ($ explode_array [1])) эхо "значение CD =" $ explode_array [1].

Смежные вопросы