在URL PHP中显示搜索查询

时间:2011-11-06 11:10:47

标签: php search

我有一个允许用户搜索我的网站的文本框。

<form method="post" action="">    
  <input type="text" name="search" id="search" />
  <input type="submit" name="submit" id="submit" value="Search" />
</form>

当用户点击“搜索”按钮时,如何创建以下网址,并将搜索框的内容追加到结尾,同时添加“_”代替任何空格?:

http://www.mysite.co.uk/find/ this_is_my_search

此外,如果有人在URL中编辑搜索查询,如何更新搜索文本框以反映此更改,因此该框包含以下内容

这是我的搜索。

4 个答案:

答案 0 :(得分:0)

您可以在提交活动之前使用JavaScript更改操作网址。 您可以使用onSubmit事件或使用jquery $('form').submit(function(){ $(this).attr('action', $('#search').val().replace(' ', '_')) })

答案 1 :(得分:0)

您需要使用404页面处理该网址。您可以使用$ _SERVER ['REQUEST_URI']来获取该路径。例如,您可以在自定义404页面中执行此操作:

<?php
    if (stripos($_SERVER['REQUEST_URI'], "/find/") == 0) //If url is yoursite.co.uk/find/
    {
        $searchterm = basename($_SERVER['REQUEST_URI']);
        //Search for $searchterm
        //Print the results
    }
    else
    {
        header("HTTP/1.0 404 Not Found");
    }
?>

答案 2 :(得分:0)

这可以通过多种方式实现。

<强>的Javascript

请参阅StarLight的回答。这很简单并且可以完成工作,但您需要检查非法的URL字符。

PHP重定向

示例:将表单操作设置为“search.php”。

<?php
$urlstr = urlencode(str_replace(' ', '_', $_GET['search']));
header("Location: http://www.mysite.co.uk/find/$urlstr");
exit;
?>

要更新文本框,您需要在显示搜索框的页面上显示以下代码。

<?php
// First get $urlstr from url.
$searchstr = str_replace('_', ' ', urldecode($urlstr));
$textboxvalue = (empty($searchstr)) ? 'Search' : $searchstr;
?>

<input type="submit" name="submit" id="submit" value="<?=$textboxvalue?>" />

答案 3 :(得分:0)

更改表单方法以获取..如果您使用代码点火器或其他framworks,您应该能够像

一样编码
  $search = Uri:segment(2);
  echo '<input type="submit" name="submit" id="submit" value="'.$search.'" />';