我正在尝试使用urlencode转换字符串:<a href="<?php print 'search.php?query='.quote_replace(addmarks($search_results['did_you_mean'])).'&search=1'?>">
实际上,我想实现一个搜索引擎。
|-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.
我使用:localhost/index.php/?page=search
search_form.html包含搜索按钮。它使用:<form action="index.php/?page=search" method="get">
调用search.php。我不确定它是否正确。
提交搜索请求后,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']; ?>
似乎应该可行,但点击搜索按钮后,结果网址为index.php/?query=&search=1
。我认为它应该是index.php/?page=search/?query=&search=1
。
所以,我尝试使用urlencode来解决它。我不知道这个想法是否正确。
答案 0 :(得分: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")
编码&
和=
的{{1}}相同,并且会导致%26search%3D1
),这将导致网址无法使用。
答案 1 :(得分:4)
urlencode的使用方式如下:
$url = 'http://example.com/page?foo='.urlencode($foo).'&bar='.urlencode($bar);