我有一个html表单,其中一个部分生成带有随机名称的输入。
生成每个输入名称时,开头是文本“book”,最后是随机文本。
<input type="text" name="book_4552f" />
<input type="text" name="book_3507p" />
<input type="text" name="book_8031b" />
如何使用PHP获取所有以文本“book”开头的$ _POST变量?
答案 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;
}
}