0

次のように正規表現を使用して POST 変数を取得する方法:

$var = $_POST['foo?'];

また

$var = $_POST['foo\w{1}'];

編集:

私のフォームには、file1、file2、file3 という名前の異なるボタンがたくさんあります。ボタンを押すと、もちろん file1 や file2 が渡されます... その名前を使用して値を取得したいです。

4

5 に答える 5

1

フォーム フィールドに配列データ構造として名前を付けます。

<input name="files[]" ...>

foreach ($_POST['files'] as $file) {
    ...
}
于 2012-11-08T09:46:47.293 に答える
1

配列をループして実行し、キーをチェックします

お気に入り:

// some POST: array('a' => 1, 'b' => 2, 'cc11' => 6666666)

foreach( $_POST as $k => $v ) {
   if ( preg_match('#^[^\d]+$#', $k) ) { // not number key 
      // you actions ...
   }
}
于 2012-11-08T09:19:38.680 に答える
1

$_POST 配列をループする必要があります。

$regex = "@foo\w{1}@";
$vars = array();

foreach($_POST as $name=>$value) {
    if(preg_match($regex, $name)) {
        $vars[$name] = $value;
    }
}

お役に立てれば。

于 2012-11-08T09:20:39.583 に答える
1

あなたの場合、これを行うことができます:

<?php
    $_POST = array(
        "foo" => "bar",
        "file1" => "something",
        "file2" => "somethingelse",
        "file3" => "anothervalue",
        "whocares" => "aboutthis"
    );
    $files = array();
    foreach ($_POST as $key => $value) {
        if (preg_match("/file(\d+)/", $key, $match)) {
            $files[$match[1]] = $value;
        }
    }
    print_r($files);
?>

出力 (キーがファイル [ NUMBER ] と一致する場所):

Array ( 
    [1] => something 
    [2] => somethingelse 
    [3] => anothervalue 
)
于 2012-11-08T09:29:22.990 に答える
1

私が考えることができる最も簡単なことはこれです:

$allPostKeys = implode(',',array_keys($_POST));
$wildcardVals = array();
if (preg_match_all('/,?(foo[0-9]),?/',$allPostKeys,$matches))
{
    $wildCardKeys = $matches[1];
    while($key = array_shift($wildCardKeys))
    {
        $wildcardVals[$key] = $_POST[$key];
    }
}
if (!empty($wildcardVals))
{//do stuff with all $_POST vals that you needed
}

任意の文字に一致するように、または一致する必要があるものに一致するよう[0-9]に正規表現を置き換えます。 次のキーを持つ配列でこれをテストしたところ、返された 、これが必要なものだと思います。.
bar,zar,foo1,foo2,foo3array('foo1' => 'val1','foo2' => 'val2','foo3' => 'val3')


あなたの編集に応えて$_POSTスーパーグローバルは多次元配列にもなり得ます:

<input type="file" name="file[]" id="file1"/>
<input type="file" name="file[]" id="file2"/>
<input type="file" name="file[]" id="file3"/>

そうすれば、ファイルを簡単にループできます。

foreach($_POST['file'] as $file)
{
    //process each file individually: $file is the value
}
于 2012-11-08T09:24:34.607 に答える