У меня есть html-форма с секцией, которая генерирует входы со случайными именами.
Каждое имя ввода генерируется с текстом «книга» в начале и случайным текстом в конце.
<input type="text" name="book_4552f" /> <input type="text" name="book_3507p" /> <input type="text" name="book_8031b" />
Как использовать PHP для получения всех переменных $ _POST, которые начинаются с текста «книга»?
Следующее использует strpos (), чтобы проверить, что строка POST начинается с book_
foreach($_POST as $key => $value) { if (strpos($key, 'book_') === 0) { // value starts with book_ } }
foreach($_POST as $key => $value) { if(preg_match('@^book_@', $key)) { $books[$key] = $value; } }
Существует несколько возможностей
Сначала: (сплит-ключ)
$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; } }