Получить строку запроса в PHP не работает

#php #query-string #parse-url

#php #запрос-строка #синтаксический анализ-url

Вопрос:

Я новичок в 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:

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

В документах PHP в комментариях есть отличная функция, которая делает именно то, что вы хотите, я скопировал ее здесь, чтобы ее можно было использовать в будущих ссылках — вся заслуга принадлежит «Simon D» — 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('amp;', $query); 

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

    return $params; 
} 
?>
  

это означает, что его следует использовать следующим образом:

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

Комментарии:

1. Я не понимаю, как я могу это сделать со строкой URL, которая поступает из базы данных (не из текущего запроса)? Если я неправильно понимаю, пожалуйста, приведите мне пример использования…

2. как строка URL может быть получена из базы данных? С чем вы работаете?

3. Как я уже упоминал, они были ранее сохранены в базе данных, поступив из объекта запроса в Asp.Net . Итак, что нужно сделать текущему php-приложению, так это иметь возможность читать эти URL-адреса в базе данных и анализировать их в удобочитаемом формате для отображения в таблице.

4. я обновил сообщение решением после повторного прочтения вашего сообщения (его поздно, и я неправильно понял ваш первоначальный вопрос)

5. @AndersSvensson Я обновил свой код. Это то, что вы хотите? Пожалуйста, уточните.