Получить строку запроса в PHP не работает - PullRequest
0 голосов
/ 30 сентября 2011

Я новичок в php и пытаюсь следовать советам, как получить строку запроса. Я хочу найти слова в удобочитаемом формате.

Теперь строки поступают из базы данных, где они были ранее собраны с использованием свойства referer объекта запроса в Asp.Net. Но, насколько я знаю, это не должно иметь никакого значения.

Итак, я попробовал это:

function getQuery($url)
{
        $processed_url = parse_url( $url );

        $query_string = $processed_url['query'];
        if($url != '')
        {
            return $query_string;
        }
        else
        {
            return $url;
        }
}

Итак, я попробовал вариант, который также должен извлечь строку запроса:

    $query = parse_url($url, 6);

    return $query;

Ну, такие работы. Он дает мне часть строки запроса, но включает в себя "q =" и все это, а не только текст строки запроса.

Итак, я попробовал использовать функцию parse_str (), которая должна анализировать саму строку запроса:

parse_str($query, $myArray);
return $myArray[0];

Но это не сработало совсем, это не дает мне результатов на странице результатов (сетка).

Что я делаю не так? Во-первых, с первым методом для получения запроса выше, а во-вторых, для разбора строки запроса на ее компоненты? (индекс 0 был всего лишь примером, я подумал, что я объединю его позже, если мне удастся получить только текстовые части)?

1 Ответ

0 голосов
/ 30 сентября 2011

Казалось бы, вы пытаетесь проанализировать URL-адрес из строки, а не из текущего запроса (как упомянуто в комментарии)

В документации по PHP в комментариях есть отличная функция, которая делает именно то, что вы хотите, я скопировал ее здесь, чтобы ее можно было использовать в будущих ссылках - вся заслуга "Симона Д" - http://dk.php.net/manual/en/function.parse-url.php#104527

<?php 
/** 
 * Returns the url query as associative array 
 * 
 * @param    string    query 
 * @return    array    params 
 */ 
function convertUrlQuery($query) { 
    $queryParts = explode('&', $query); 

    $params = array(); 
    foreach ($queryParts as $param) { 
        $item = explode('=', $param); 
        $params[$item[0]] = $item[1]; 
    } 

    return $params; 
} 
?>

, что означает, что его следует использовать так:

$array = convertUrlQuery(parse_url($url, 6));
...