2012-01-11 19 views
15

से शुरू होने वाले सभी $ _POST चर प्राप्त करें मेरे पास एक सेक्शन का एक HTML फॉर्म है जो यादृच्छिक नामों के साथ इनपुट उत्पन्न करता है।कुछ पाठ

प्रत्येक इनपुट नाम शुरुआत में पाठ "पुस्तक" के साथ उत्पन्न होता है और अंत में यादृच्छिक पाठ होता है।

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

टेक्स्ट "पुस्तक" से शुरू होने वाले सभी $ _POST चर प्राप्त करने के लिए मैं PHP का उपयोग कैसे करूं?

उत्तर

24

निम्नलिखित कि पोस्ट तार के साथ शुरू होता है की जाँच करने के strpos() का उपयोग करता 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

अगर स्टेटमेंट को बंद नहीं किया गया है (preg_match ('@^book_ @', $ key)) – ddjikic

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; 
    } 
} 
संबंधित मुद्दे