2009-11-18 3 views
0

Я пытаюсь использовать UrlEncode преобразовать строку: <a href="<?php print 'search.php?query='.quote_replace(addmarks($search_results['did_you_mean'])).'&search=1'?>">как использовать UrlEncode в PHP

На самом деле, я хочу, чтобы реализовать поисковую систему.

|-www 
|- index.php 
|- search directory 
    |- search.php 
    |- header.html 
    |- search_form.html 
    |- search_result.html 
    |- footer.html 

search.php includes header.html,search_form.html,search_result.html etc.

получить доступ search.php с помощью: localhost/index.php/?page=search

search_form.html кнопку включить поиск. И он вызывает search.php, используя: <form action="index.php/?page=search" method="get">. Я не уверен, правильно ли это.

После отправки запроса на поиск search.php вызывает search_result.html, чтобы показать результат. Код в search_result.html: <a href="<?php print 'search.php?query='.quote_replace(addmarks($search_results['did_you_mean'])).'&search=1'?>"><?php print $search_results['did_you_mean_b']; ?>

Кажется, должно работать, но после того, как я нажимаю кнопку поиска, результат URL является index.php/?query=&search=1. И я думаю, что это должно быть index.php/?page=search/?query=&search=1.

Итак, я пытаюсь использовать urlencode для его решения. И я не знаю, правильна ли идея.

Большое спасибо за помощь.

+0

@ ApoY2k, я редактировал пост и попытаться объяснить это ясно. Можете ли вы помочь мне найти, где проблема? Большое спасибо. –

ответ

10
$url = 'search.php?' . http_build_query(array(
    'query' => $search_results['did_you_mean'], 
    'search' => 1 
)); 

Это самый простой способ пойти - см. http_build_query().

Я не знаю, что ваши функции quote_replace() и addmarks() делать, но при запуске urlencode("search.php?query=") это также будет кодировать ? и = и приведет к search.php%3Fquery%3D (то же самое для urlencode("&search=1"), который кодирует & и = и приведет к %26search%3D1), что в итоге сделает URL непригодным для использования.

+1

+1 Я забыл об этой функции, это невероятно полезно! –

+0

@Stefan, вы поняли, как использовать http_build_query(). Спасибо –

+0

@Stefan, я просто хочу обработать '?'. Но я полностью потерял это. Вы можете мне помочь? –

4

UrlEncode используется так:

$url = 'http://example.com/page?foo='.urlencode($foo).'&bar='.urlencode($bar); 
+0

@Bart van Heukelom, Спасибо, ваш пример хороший. –

+0

@Bart van Heukelom, но как справиться с вопросительным знаком? –

+0

Я не понимаю, что вы имеете в виду. Ручка - очень общее слово. Знак вопроса, который разделяет имя ресурса из строки запроса, не требует специального обращения. –