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 +}'].这就像标题一样,跟在它后面至少有一位数.
谢谢您的帮助!
编辑:哦,如果这已经不够了,标题字段的数量是无限的.所以我不能只循环遍历所有可能的"标题",因为这显然是一个无限循环.
您可以在[]中使用字段名称:
<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)