如何在一个变量中捕获来自多个表单搜索字段的数据


How to capture data from multiple form search fields in one variable

我有一个html搜索表单,包含多个字段,如select、textarea和text inputs。我需要将所有字段的值存储到php搜索表单中的$input中,但我不知道如何将它们存储到php页面上一个名为$input的变量中。

<form name="search" method="post" action="http://example.com/search/">
Seach for: <input type="text" name="find" /> <input type="submit"  
name="search" value="Search" />
Search for movies by Type
<select name="find">
<option value="Sci-Fi" selected>Sci-Fi</option>
<option value="Comedy">Comedy</option>
<option value="Drama">Drama</option>
</select>
</form>
//on search.php need to 'find' to be data from several form inputs
$input = $_POST['find'];

如果给多个输入相同的名称,$_POST['find']将只包含其中一个(我认为是最后一个)的输入。您需要给它们不同的名称,或者可以用[]结束名称。当您执行后者时,PHP会将所有输入放入一个数组中。

<form name="search" method="post" action="http://example.com/search/">
Seach for: <input type="text" name="find[]" /> <input type="submit" name="search" value="Search" />
Search for movies by Type
<select name="find[]">
    <option value="Sci-Fi" selected>Sci-Fi</option>
    <option value="Comedy">Comedy</option>
    <option value="Drama">Drama</option>
</select>
</form>

有了这个,你可以做:

$input = implode(' ', array_filter($_POST['find']));

array_filter将删除任何空值,然后将其余值用空格连接在一起。

使$input成为一个数组。例如:

$input = array(
    "user" => $_POST['username'],
    "find" => $_POST['find'],
);

或者简单地通过以下操作将所有内容添加到$input中:

$input .= $_POST['username'];
$input .= $_POST['find'];
<?php
array_pop($_POST); // To delete Submit button from $_POST
foreach(array_filter($_POST) as $key=> $val)
{
    $input .= "$val";
}
?>