PHP使用可变数量的具有变量名称的字段提交表单,检查是否至少有一个集合

use*_*171 0 php forms isset name-attribute

好的,所以我的标题可能有点令人困惑,但让我解释一下我的情况:

我有一个非常大的形式有很多领域,一些是必需的,一些不是.我用JS验证,但后来我也在用PHP验证服务器端.

我要求用户提出的一个问题是"标题名称".现在,标题名称的名称属性为"header1".用户可以选择在表单上添加更多标题字段.因此,如果他们单击一个按钮,则会添加另一个名称属性为"headerx"的"标题名称X".

得到它了?现在,问题是,通常这些头字段不是必需的,但我确实有条件,它们必须提供至少一个Header字段.因此,他们可以提供100,他们可以提供2,他们可能提供1,但如果他们不提供任何,那么验证应该失败.

我想不出在PHP中检查这个的好方法.我知道你的拳头想法只是检查$ _POST是否包含任何内容.但是不会起作用,因为它们是这个表单中的多个其他字段,这些字段与这些Headers无关.所以我不能只是简单地检查$ _POST是否包含某些东西,因为它总是会.

有没有办法我可以将isset()与正则表达式结合起来?就像isset一样($ _ POST ['header {\ d +}'].这就像标题一样,跟在它后面至少有一位数.

谢谢您的帮助!

编辑:哦,如果这已经不够了,标题字段的数量是无限的.所以我不能只循环遍历所有可能的"标题",因为这显然是一个无限循环.

jpi*_*pic 5

您可以在[]中使用字段名称:

<input type="text" name="foo[]" value="x" />
<input type="text" name="foo[]" value="y" />
Run Code Online (Sandbox Code Playgroud)

然后$ _POST就像:

array('foo' => array('x', 'y'));
Run Code Online (Sandbox Code Playgroud)

你甚至可以拥有关联数组:

<input type="text" name="foo[bar][first]" value="x" />
<input type="text" name="foo[bar][second]" value="y" />
Run Code Online (Sandbox Code Playgroud)

看起来像:

array('foo' => array('bar' => array('first' => 'x', 'second' => 'y')))
Run Code Online (Sandbox Code Playgroud)