2012-01-11 22 views
15

我有一個帶有隨機名稱輸入部分的html表單。

每個輸入名稱都以文本「book」開頭,隨機文本結尾生成。

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

如何使用PHP獲取以文本「book」開頭的所有$ _POST變量?

回答

24

下使用strpos()來檢查POST字符串開頭book_

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

THANK YOu !!!!!!!!!!!!! – supercoolville 2012-01-11 19:01:37

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

真的嗎?有人低估了這個?謹慎解釋? – ceejayoz 2012-01-11 19:00:38

+0

這不應該downvoted ... – 2012-01-11 21:36:42

+0

沒有關閉,如果陳述如果(preg_match('@^book_ @',$ key)) – ddjikic 2014-09-08 12:25:30

1

有幾個possiblities

第一:(分裂密鑰)

$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; 
    } 
} 
相關問題