Получить все переменные $ _POST, начиная с определенного текста - PullRequest
18 голосов
/ 11 января 2012

У меня есть HTML-форма с разделом, который генерирует входные данные со случайными именами.

Каждое входное имя генерируется с текстом «книга» в начале и произвольным текстом в конце.

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

Как мне использовать PHP, чтобы получить все переменные $ _POST, которые начинаются с текста "book"?

Ответы [ 3 ]

33 голосов
/ 11 января 2012

Следующее использует strpos () , чтобы проверить, что строка POST начинается с book_

foreach($_POST as $key => $value) {
    if (strpos($key, 'book_') === 0) {
        // value starts with book_
    }
}
6 голосов
/ 11 января 2012
foreach($_POST as $key => $value) {
  if(preg_match('@^book_@', $key)) {
    $books[$key] = $value;
  }
}
1 голос
/ 11 января 2012

Есть несколько возможностей

Первое: (разделенная клавиша)

    $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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...