我有一个搜索表单,我希望$ _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>
更新:感谢各位回复。我会用爆炸,看起来相当简单。加上名字听起来很酷^^
答案 0 :(得分:5)
表格形式:
<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>
<? } ?>
答案 1 :(得分:3)
如果您希望用户在单独的输入控件中输入多个搜索词,则上述答案应该会有所帮助。但是,您的示例表单让我想知道您是否只想使用一个搜索短语输入文本框。如果是这样,这可能就是你要找的东西:
<?php
$searchTerms = preg_split("/[\s,]+/", $_REQUEST['SearchTerms']);
foreach($searchTerms as $term) { ?>
<span class="term"><?= htmlentities($term) ?></span>
<?
}
?>
答案 2 :(得分:2)
我是这样做的..
传递一个数组(它实际上只是PHP的一个字符串):
http://www.somesite.net/myscript.php?myArray=Planes,Trains,Automobiles
然后在脚本中,只是爆炸字符串:
$ myArray = explode(“,”,$ _REQUEST ['myArray']);
也许不完全是你想要的。
答案 3 :(得分:1)
我想您希望用户只有一个条目输入,然后您可以将其拆分为一组单独的搜索词。
将输入拆分为空格(将连续的空格字符视为一个)以导出单独的术语。
例如:
$termList = preg_split("/\s+/", trim($_REQUEST['s']));
foreach($termList as $term) { echo "<span>".htmlspecialchars($term)."</span>\n"; }
当然,在使用之前不要忘记正确过滤和转义输入。
答案 4 :(得分:1)
如果您想按空格符号中断搜索字词,请尝试以下代码:
<?php
$search_terms = explode(" ", $_REQUEST['s']);
foreach($search_terms AS $search_term_item) {
echo "<span class=\"SearchTerm\">".htmlspecialchars($search_term_item)."</span>";
}
?>
答案 5 :(得分:0)
在HTML表单元素中,您可以将名称指定给数组,如下所示:
<select id="MySelect" multiple="multiple" name="SearchTerms[]" class="MyClass">
...
</select>
然后,当您在提交后处理表单时,您可以执行以下操作:
<?php
foreach($_REQUEST['SearchTerms'] as $SearchTerm)
{
Print("<span class=\"SearchTerm\">$SearchTerm</span>");
}
?>
答案 6 :(得分:0)
以下是将表单结果作为数组传递的更多详细信息: http://us.php.net/manual/en/faq.html.php#faq.html.arrays