PHP |通过$ _POST []获取输入名称

时间:2012-11-14 11:22:27

标签: php post properties

HTML示例:

  <form method="post" id="form" action="form_action.php">
    <input name="email" type="text" />
  </form> 

用户填写输入字段:dfg@dfg.com

echo $_POST['email']; //output: dfg@dfg.com

表单中每个输入的名称和值都将发送到服务器。 有没有办法获得名称属性? 所以像..

echo $_POST['email'].name; //output: email

编辑: 澄清对我的问题的一些疑惑;

我们的想法是使用交换机动态验证每个输入。我使用一个单独的验证类来保持一切清洁。这是我最终结果的一个简短例子:

//Main php page
if (is_validForm()) {
    //All input is valid, do something..
}

//Separate validation class    
function is_validForm () {
    foreach ($_POST as $name => $value) {
        if (!is_validInput($name, $value)) return false;
    }
    return true;
   }

function is_validInput($name, $value) {
    if (!$this->is_input($value)) return false; 

    switch($name) {
        case email: return $this->is_email($value);  
        break;
        case password: return $this->is_password($value);
        break;
//and all other inputs
        }
    }

感谢raina77ow和其他所有人!

8 个答案:

答案 0 :(得分:18)

您可以在foreach循环中处理$ _POST以获取名称及其值,如下所示:

foreach ($_POST as $name => $value) {
   echo $name; // email, for example
   echo $value; // the same as echo $_POST['email'], in this case
}

但是您无法从$_POST['email']值获取属性名称 - 它是一个简单的字符串,并且它不存储其“原点”。

答案 1 :(得分:1)

foreach($_POST as $key => $value)
{
 echo 'Key is: '.$key;
 echo 'Value is: '.$value;
}

答案 2 :(得分:1)

如果你想动态地做,你可以这样做:

foreach ($_POST as $key => $value)
{
    echo 'Name: ', $key, "\nValue: ", $value, "\n"; 
}

答案 3 :(得分:1)

使用object/array

循环foreach
foreach($_POST as $key => $items) {
    echo $key . "<br />";
}

或者您可以使用var_dumpprint_r来调试arraysobjects等大型变量:

echo '<pre>' . print_r($_POST, true) . '</pre>';

或者

echo '<pre>';
var_dump($_POST);
echo '</pre>';

答案 4 :(得分:1)

实际上我发现了一些可能对你有用的东西,看看这个 -

http://php.net/manual/en/function.key.php

此页面显示以下代码,

<?php
$array = array(
    'fruit1' => 'apple',
    'fruit2' => 'orange',
    'fruit3' => 'grape',
    'fruit4' => 'apple',
    'fruit5' => 'apple');

// this cycle echoes all associative array
// key where value equals "apple"
while ($fruit_name = current($array)) {
    if ($fruit_name == 'apple') {
        echo key($array).'<br />';
    }
    next($array);
}
?>

会给你输出,

fruit1
fruit4
fruit5

就这么简单。

答案 5 :(得分:0)

电流(array_keys($ _ POST)) 应该给你你想要的东西。虽然没有测试过。

答案 6 :(得分:0)

很好的方式来查看已提交或将要提交的表单名称

<?php
$i=1;
foreach ($_POST as $name => $value) {
echo "</b><p>".$i." ".$name; 
echo " = <b>".$value; 
$i++;
}
?>

只需将表单发送到此脚本,它就会显示正在提交的内容。

答案 7 :(得分:-2)

您可以使用foreach循环来获取所有已设置的值。

foreach ($_POST AS $k=>$v){
    echo "$k is $v";
}

你的例子

echo $_POST['email'].name; //output: email

没有意义,因为您已经知道要访问的值的名称?