如何在PHP中使用urlencode

时间:2009-11-18 10:34:52

标签: php urlencode

我正在尝试使用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.php

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来解决它。我不知道这个想法是否正确。

2 个答案:

答案 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);