Obtenga todas las variables $ _POST comenzando con cierto texto

Tengo un formulario html con una sección que genera entradas con nombres aleatorios.

Cada nombre de entrada se genera con el texto “libro” al principio y texto al final.

   

¿Cómo uso PHP para obtener todas las variables $ _POST que comienzan con el texto “libro”?

Lo siguiente usa strpos () para verificar que la cadena POST comience con 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; } } 

Hay varias posibilidades

Primero: (tecla dividida)

  $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; } } 

O con preg_match como en el ejemplo anterior, pero también hay una buena razón por la que podrías querer solo la última parte de k = por ejemplo book_8031b solo el 8031b

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