2012-01-11 8 views
15

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.

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

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

Respuesta

24

los siguientes usos strpos() para comprobar que la cadena de la POST comienza con Book_

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

GRACIAS YO !!!!!!!!!!!!! – supercoolville

4
foreach($_POST as $key => $value) { 
    if(preg_match('@^[email protected]', $key)) { 
    $books[$key] = $value; 
    } 
} 
+0

¿Realmente? Alguien votó negativamente esto? ¿Le importaria explicar? – ceejayoz

+0

Esto no debe ser downvoted ... –

+0

no cerró si statment if (preg_match ('@^book_ @', $ key)) – ddjikic

1

Hay varias posibilidades

Primera: (llave 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 el anterior, pero también hay una buena razón por la que quizás quieras solo ú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; 
    } 
} 
Cuestiones relacionadas