2016-02-05 2 views
1

У меня есть следующие поля после отправки, и я пытаюсь получить значение каждого из чисел в поле формы для количества. Может ли кто-нибудь помочь мне с регулярным выражением? Я пытаюсь получить каждое из чисел в переменной.Необходимый формат preg_match/regex

FORMAT

Quantity_{Category}_{Product}_{Item} 

POST ПЛОЩАДКА ПРЕДСТАВЛЕН

[submitted] => 1 
[Quantity_12038_16061_24960] => 1 
[Quantity_12037_16060_24959] => 2 
[btnBuyNow] => Next Step 

PHP КОД

foreach ($_POST as $key => $value) { 
    if (preg_match('/^Quantity_(\d+)$/', $key, $matches)) { 
     echo 'Key:' . $key . '<br>'; 
     echo 'Matches:' . $matches . '<br>'; 
     echo '<hr>'; 
    } 
} 

ответ

2

Использование preg_match()docs для этой цели, и это пример того, как код будет выглядеть :

$subject="Quantity_12038_16061_24960"; 
$pattern='/Quantity_(\d+)_(\d+)_(\d+)/'; 
preg_match($pattern, $subject, $matches); 

echo $matches[0]; //12038 {Category} 
echo $matches[1]; //16061 {Product} 
echo $matches[2]; //24960 {Item} 

вы можете увидеть, как это регулярное выражение выполняет here.

+1

Спасибо, что было близко, но я смог его исправить. Ниже был выходной, так что я просто должен был настроить его, чтобы вытащить из 1, 2 и 3, а не 0. \t Массив \t ( \t [0] => Quantity_12038_16061_24960 \t [1] => 12038 \t [2 ] => 16061 \t [3] => 24960 \t) –

1

Как говорится, вопрос, регулярное выражение не требуется:

foreach($_POST as $key => $val) { 
    if(strpos($key, 'Quantity') === 0) { 
     $results = explode('_', $key); 
     print_r($results); 
    } 
} 

Чтобы избавиться от количества строки по какой-либо причине просто unset($results[0]);.

Смежные вопросы