Как получить значения только определенных input'ов?

Рейтинг: 0Ответов: 2Опубликовано: 22.09.2014

Здравствуйте.
У меня есть форма с нескольким input'ами. Передается GET'ом. Мне нужно получить значения только pos1, pos4, pos15. (Это в качестве примера. В действительности их может быть сколько угодно, под разными цифрами.) Или, можно сказать, вывести их в отдельный массив. Может, что-то вроде этого сделать: $_GET['pos[0-9]{1,}']? Но так не работает. Спасибо за помощь.

<input name="in_comment" value=""> Комментарий<br>
<input name="in_payer" value=""> Плательщик<br>

Услуга <input name="pos1"> Сумма <input name="sum_pos1"><br>
Услуга <input name="pos4"> Сумма <input name="sum_pos2"><br>
Услуга <input name="pos15"> Сумма <input name="sum_pos2"><br>

Ответы

▲ 2Принят

@vitaan, а почему бы не группировать элементы в самой форме?

<input name="in_comment" value=""> Комментарий<br>
<input name="in_payer" value=""> Плательщик<br>

Услуга <input name="pos[1]" value="a"> Сумма <input name="sum_pos[1]" value="1"><br>
Услуга <input name="pos[4]" value="b"> Сумма <input name="sum_pos[2]" value="2"><br>
<!-- Обратите внимание, у вас sum_pos2 в этом месте перезапишет предыдущее значение -->
Услуга <input name="pos[15]" value="c"> Сумма <input name="sum_pos[2]" value="3"><br>

Массив будет примерно такого вида:

Array
(
    [in_comment] => ""
    [in_payer] => ""
    [pos] => Array
        (
            [1] => "a"
            [4] => "b"
            [15] => "c"
        )
    [sum_pos] => Array
        (
            [1] => 1
            [2] => 3
        )

)
▲ 1

Костыль1:

function reget($regexp){
  $out = '';
  foreach($_GET as $k=>$v){
    if(preg_match($regexp,$k)){
      $out[] = $v;
    }
  } 
  return $out;
}

$arr_of_values = reget('pos[0-9]{1,}');

Костыль2:

Назвать их не pos1, pos2, а всех одинаково: pos[]. Перед отправкой дизейблить ненужные.

Некостыльного метода, пожалуй, нет.

P.S.

вместо {1,} лучше писать +