2009-10-09 45 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>"; 
    } 
?>