#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 Я обновил свой код. Это то, что вы хотите? Пожалуйста, уточните.