Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中如何通过父类名称获取元素_Php - Fatal编程技术网

PHP中如何通过父类名称获取元素

PHP中如何通过父类名称获取元素,php,Php,HTML标记: <form> <div class="required"> <input id="name" name="name"> </div> <div class="required"> <input id="email" name="email"> </div> <div class="non-required"> <input id="ot

HTML标记:

<form>
  <div class="required">
    <input id="name" name="name">
  </div>
  <div class="required">
    <input id="email" name="email">
  </div>
  <div class="non-required">
    <input id="other" name="other">
  </div>
  ...
  alot of input here
  ...

</form>

...
这里有很多输入
...
PHP:


我可以手动编辑它,但是如何为PHP主函数自动选择
input
具有
required


谢谢。

您无法访问父级的类名。用户提交表单时不会传输此信息

$\u POST中唯一可用的信息是输入元素的名称和值。您可以定义输入元素的名称来表示必需/非必需,如下所示:

<form>
    <div class="required">
         <input id="name" name="required[name]">
    </div>
    <div class="required">
         <input id="email" name="required[email]">
    </div>
    <div class="optional">
         <input id="another" name="optional[another]">
    </div>
    <div class="required">
         <input id="other" name="required[other]">
    </div>
</form>
警告

如果使用此解决方案,请确保正确验证输入。您将信任用户代理提供有关字段的正确信息。请看Trincot的答案,了解纯服务器端解决方案。

您无法访问父级的类名。用户提交表单时不会传输此信息

$\u POST中唯一可用的信息是输入元素的名称和值。您可以定义输入元素的名称来表示必需/非必需,如下所示:

<form>
    <div class="required">
         <input id="name" name="required[name]">
    </div>
    <div class="required">
         <input id="email" name="required[email]">
    </div>
    <div class="optional">
         <input id="another" name="optional[another]">
    </div>
    <div class="required">
         <input id="other" name="required[other]">
    </div>
</form>
警告

如果使用此解决方案,请确保正确验证输入。您将信任用户代理提供有关字段的正确信息。看看Trincot的答案,这是一个纯粹的服务器端解决方案。

因为您自己生成HTML,所以您实际上知道哪些输入元素具有“required”类。因此,我建议您首先创建一个包含必需字段的数组,并使用动态类值从该数组生成HTML

之后,您可以使用相同的数组检查是否为空:

HTML生成:

<?php
// define the list of required inputs:
$required = array("name", "email");

// define a function that returns "required" or "non-required" 
// based on the above array.
function req($name) {
    global $required;
    return in_array($required, $name) ? 'required' : 'non-required';
}
// Now generate the classes dynamically, based on the above:
?>
<form>
  <div class="<?=req('name')?>">
    <input id="name" name="name">
  </div>
  <div class="<?=req('email')?>">
    <input id="email" name="email">
  </div>
  <div class="<?=req('other')?>">
    <input id="other" name="other">
  </div>
  ...
  alot of input here
  ...

</form> 


因为您自己生成HTML,所以您实际上知道哪些输入元素具有类“required”。因此,我建议您首先创建一个包含必需字段的数组,并使用动态类值从该数组生成HTML

之后,您可以使用相同的数组检查是否为空:

HTML生成:

<?php
// define the list of required inputs:
$required = array("name", "email");

// define a function that returns "required" or "non-required" 
// based on the above array.
function req($name) {
    global $required;
    return in_array($required, $name) ? 'required' : 'non-required';
}
// Now generate the classes dynamically, based on the above:
?>
<form>
  <div class="<?=req('name')?>">
    <input id="name" name="name">
  </div>
  <div class="<?=req('email')?>">
    <input id="email" name="email">
  </div>
  <div class="<?=req('other')?>">
    <input id="other" name="other">
  </div>
  ...
  alot of input here
  ...

</form> 


@特林科特:谢谢你的夸奖。您的解决方案遵循相同的思想,但将所有内容都保留在服务器端。根据具体情况,这可能更快、更安全。因此,我为我的问题添加了一个附录。@trincot:谢谢你的赞扬。您的解决方案遵循相同的思想,但将所有内容都保留在服务器端。根据具体情况,这可能更快、更安全。因此,我在我的问题中增加了一个增编。
<?php

// This extract is not needed for the next loop, but you might need it still:
extract($_POST, EXTR_PREFIX_ALL, 'input');

// go through all inputs that are required and test for empty
// until you find one, and produce the appropriate response 
foreach($required as $name) {
    if (empty($_POST[$name])) {
        // main (error?) function here
        break; // no need to continue the loop as we already found an empty one
    }
}

?>