从特定文本开始获取所有$ _POST变量

时间:2012-01-11 18:54:51

标签: php post

我有一个html表单,其中一个部分生成带有随机名称的输入。

生成每个输入名称时,开头是文本“book”,最后是随机文本。

<input type="text" name="book_4552f" />
<input type="text" name="book_3507p" />
<input type="text" name="book_8031b" />

如何使用PHP获取所有以文本“book”开头的$ _POST变量?

3 个答案:

答案 0 :(得分:34)

以下使用strpos()检查POST字符串是否以book_

开头
foreach($_POST as $key => $value) {
    if (strpos($key, 'book_') === 0) {
        // value starts with book_
    }
}

答案 1 :(得分:6)

foreach($_POST as $key => $value) {
  if(preg_match('@^book_@', $key)) {
    $books[$key] = $value;
  }
}

答案 2 :(得分:1)

有几种可能性

首先:(分裂键)

    $result = array();
    foreach($_POST AS $k=>$v) {
        //Explode k (book_*) into an array with max 2 values
        $k_array = explode("_", $k, 2); 
        if(isset($k_array[0]) && $k_array[0] == "book") {
            $result[$k] = $v;
        }
    }

或者使用上面的preg_match,但也有一个很好的理由,你可能只需要k =的最后一部分,例如book_8031b只是8031b

$result = array();
foreach($_POST AS $k=>$v) {
    if(preg_match("/^book_(.*)$/", $k, $matches)) {
        $result[$matches[1]] = $v;
    }
}