2009-10-09 35 views
1

我有一个搜索表单,我想$ _REQUEST作为一个数组的搜索条件,所以我可以列出每个搜索词,每个词包围在一个范围的样式。我怎么做?

编辑:这是要求的代码。

<form action="http://localhost/wordpress" id="search" method="get"> 
<input type="text" size="30" id="s" name="s" value="Type and hit enter" onfocus="javascript:this.value='';" onblur="javascript:this.value='Type and hit enter';"/> 
<br/> 
<input type="submit" value="Search"/> 
</form> 

更新:谢谢各位的回复。我会用爆炸,看起来相当简单。加上名字听起来很酷^^

+2

$ _REQUEST中的内容取决于表单的结构。发布你的表单,以便我们可以看到你在做什么。 – dnagirl 2009-10-09 14:03:08

+1

$ _REQUEST已经是一个关联数组。你究竟是什么意思?你能展示一些代码吗? – 2009-10-09 14:05:36

+2

请注意,如果您正在处理POST请求,则直接使用$ _POST会更安全。 – slikts 2009-10-09 14:22:10

回答

4

形式:

<input type="text" name="terms[]" /> 
<input type="text" name="terms[]" /> 
<input type="text" name="terms[]" /> 

在形式处理器:

<? foreach($_REQUEST['terms'] as $term) { ?> 
    <span style="searchterm"><?= htmlspecialchars($term) ?></span> 
<? } ?> 
+0

既然你已经发布了这个,那么编辑这个问题是为了增加一个例子。 – Powerlord 2009-10-09 14:27:13

0

在你的HTML表单元素可以将名字分配到一个数组,像这样:

<select id="MySelect" multiple="multiple" name="SearchTerms[]" class="MyClass"> 
    ... 
</select> 

那么当你submittion后处理的形式,你可以这样做:

<?php 
    foreach($_REQUEST['SearchTerms'] as $SearchTerm) 
    { 
     Print("<span class=\"SearchTerm\">$SearchTerm</span>"); 
    } 
?> 
2

我想你希望用户有一个单一入口输入,你再要拆分成单独的搜索数组条款。

将您的输入分割为空格(将连续的空格字符视为一个)来派生单独的词。

例如:

$termList = preg_split("/\s+/", trim($_REQUEST['s'])); 
foreach($termList as $term) { echo "<span>".htmlspecialchars($term)."</span>\n"; } 

Ofcourse不要忘了适当的过滤和使用它之前逃脱输入。

2

如果您希望用户在单独的输入控件中输入多个搜索词,上述答案应该会有所帮助。但是,您的示例表单导致我想知道您是否只想使用一个搜索短语输入文本框。如果你想通过空间的符号打破你的搜索条件只是试试这个代码

<?php 
    $searchTerms = preg_split("/[\s,]+/", $_REQUEST['SearchTerms']); 

    foreach($searchTerms as $term) { ?> 
    <span class="term"><?= htmlentities($term) ?></span> 
<? 
    } 
?> 
1

:如果是这样的话,这可能是你在找什么

<?php 
    $search_terms = explode(" ", $_REQUEST['s']); 
    foreach($search_terms AS $search_term_item) { 
    echo "<span class=\"SearchTerm\">".htmlspecialchars($search_term_item)."</span>"; 
    } 
?>