2012-01-11 16 views
15

Ho un modulo html con una sezione che genera input con nomi casuali.

Ogni nome di input viene generato con il testo "book" all'inizio e il testo casuale alla fine.

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

Come si usa PHP per ottenere tutte le variabili $ _POST, che iniziano con il "libro" di testo?

risposta

24

Di seguito utilizza strpos() per verificare che la stringa POST inizia con libro _

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

GRAZIE YOU !!!!!!!!!!!!! – supercoolville

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

Davvero? Qualcuno ha downvoted questo? Cura di spiegare? – ceejayoz

+0

Questo non dovrebbe essere downvoted ... –

+0

non chiuso se statment if (preg_match ('@^book_ @', tasto $)) – ddjikic

1

Ci sono diversi possiblities

Primo: (tasto SPLIT)

$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 come sopra, ma c'è anche una buona ragione per cui potresti volere solo il ultima parte di k = per esempio book_8031b solo 8031b

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