2011-09-24 30 views
1

我已经查找了几个小时,找不到任何我想要做的示例。我什至不知道什么PHP功能需要使用,但我想可能是一个正则表达式。我试图使用in_array,但它不起作用。我对正则表达式甚至没有足够的了解来建立一个测试。这里的问题......说我的数组是:检查字符串是否仅包含数组元素(数字和字)的组合

$sizeopts = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.5', 
' Wide', ' Narrow', 'XS', 'Small', 'Medium', 'Large', 'XL'); 

文本框的名称是“大小”,我想只允许提交上述材料的组合。示例有效输入:“10.5 Wide”或“3XL”。输入无效:“1X”或“2Wide”(缺少宽度前的空间)。我有几个不同大小的数组我需要验证。我不只是使用下拉菜单,因为有两种不同的可能组合。谢谢你尽你所能的帮助!

+0

所以'1MediumLarge Narrow0.5.5.5'会好吗? – Gordon

+0

他们没有意义,但是,他们可以提交。 :)我意识到这绝不是傻瓜证明,但它是我能想出的最佳解决方案。我向用户显示所有有效的选项,他们甚至可以点击(自动插入到文本框中)。我只是想尽量减少进入数据库的不同大小的数量...有一点标准化。例如:我不想要一些输入“XXL”和其他“2XL”,所以我消除(希望)输入“XXL”的可能性。 – Jen

回答

0

试试这个:

$valid = preg_match("/[0-9]+(?:\.5)?(?: Wide| Narrow|XS|Small|Medium|Large|XL)/",$input); 
+0

,因为OP可能无法破译/理解您可以使用'PCRE_EXTENDED'修饰符并添加内联文档以清晰起见。可读的正则表达式ftw。 – Gordon

+0

非常感谢Kolink!这工作,我会接受答案。但是不可能对我现有的数组进行检查,避免必须编写正则表达式(如果这是正确的调用它们)? – Jen

+0

其实在测试更多之后,这还不是完全的解决方案。它不允许输入“小”或“中”等。它不允许只是“宽”或“窄”,因为它们应该有数字在他们面前,但其他的话应该可以自己使用。 – Jen

相关问题