2012-01-11 1 views
15

私は、ランダムな名前の入力を生成するセクションを持つhtmlフォームを持っています。

各入力名は、最初はテキスト "book"で、最後はランダムなテキストで生成されます。

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

どのように私は、テキスト「ブック」で始まるすべての$ _POST変数を取得するためにPHPを使用していますか?

答えて

24

以下はPOST文字列がbook_

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

ありがとうございます!!!!!!!!!!!!! – supercoolville

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

本当に?誰かがこれを落とした?説明するケア? – ceejayoz

+0

これを下げてはいけません... –

+0

もしstatment if(preg_match( '@^book_ @'、$ key)) – ddjikic

1

いくつかのpossiblitiesは

まずありで始まることを確認しstrpos()を使用しています(分割鍵)

$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; 
    } 
} 
関連する問題