2011-11-06 149 views
0

我有一个允许用户搜索我的网站的文本框。在URL中显示搜索查询PHP

<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中的搜索查询,我该如何更新搜索文本框,以反映这种变化,所以对话框包含以下

这是我的搜索。

+2

?你真的认为该用户将在浏览器地址栏中编辑搜索查询并将所有空格替换为下划线? –

回答

0

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

+0

我正在使用PHP来做这个,而不是JavaScript – user826855

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"); 
    } 
?> 
0

这可以通过几种方法实现。

的Javascript

见星光的答案。这很简单,可以完成这项工作,但是您需要检查非法的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?>" /> 
0

变更表的方法来获得。而同时,如果你使用的代码点火器或其他framworks你应该能够,为什么要这么做为如下代码

$search = Uri:segment(2); 
    echo '<input type="submit" name="submit" id="submit" value="'.$search.'" />'; 
+0

尽管如此,我需要在.htaccess文件中做些什么,以使url友好:http://www.mysite.co.uk/find/this_is_my_search – user826855

+0

您可以使用 ; RewriteEngine叙述在 的RewriteCond%{REQUEST_FILENAME}!-f 重写规则^(。*)$的index.php/$ 1 [NC,QSA,L] 。你的网址应该看起来像index.php/find/blablabla ..所以在index.php中,你应该使用搜索参数路由查找控制器。但这是另一项工作。只需使用codeigniter框架就可以轻松处理所有这些工作 –