我无法访问表单,因此无法使用客户端验证。我需要使用PHP代码来检查数组中的每个值,并确保每个条目都采用某种格式。所有条目都需要以数字(例如,1,04,10,55,9069)开头,后跟下划线而不是更多的字母数字。
有效条目的示例:
5_lAb-3004-012
015_36hl_Dm
99_h3-MM-01
1_sdfd
无效条目的示例:
kk_12-04o
12-63-LL
_he-666-AA
0_jjdjd
那么,如果任何条目/值的格式不正确,那么检查数组并回显错误的代码是什么?
Code I尝试过:
// START - My add-on for checking for an underscore in the parts field.
$parts = $hForm->getValue("parts");
if (is_array($parts) && !empty($parts)) {
$partsim=implode(" ",$parts);
if (!preg_match('/_/', $partsim)) {
$hForm->setError("parts", "Missing Qty!");
}
}
// END - My add-on for checking for an underscore in the parts field.
上面的代码只检查整个数组的下划线。我需要代码来检查数组中的每个值,如果在任何数组值中找到我描述的正则表达式,则回显错误。
答案 0 :(得分:1)
正如SBI所说,它尖叫正则表达式。
您需要使用:
preg_match ("/^\d+_\w+$/", $array_string_element)
说明:
以数字开头
^\d+
后跟下划线
_
然后是更多的字母数字
\w+$
答案 1 :(得分:0)
感谢所有贡献: - )
提供的示例正则表达式为我提供了一个很好的起点,但它们不适用于我在原始帖子中列出的示例有效/无效条目。此外,没有人提供有关如何检查数组中每个值的任何信息。
无论如何,下面是我提出的代码:
// START - My add-on that checks for qty prefix in the parts field.
$parts = $hForm->getValue("parts");
if (is_array($parts) && !empty($parts)) {
$missingQty = false;
foreach ($parts as $part) {
if (!preg_match("/^\d+_+.*$/", $part)) {
$missingQty = true;
break;
}
}
if ($missingQty) {
$hForm->setError("parts", "Missing Qty!");
}
}
// END - My add-on that checks for qty prefix in the parts field.