如何确保数组中的所有值都包含数字和下划线?

时间:2015-04-30 11:06:20

标签: php arrays validation loops foreach

我无法访问表单,因此无法使用客户端验证。我需要使用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.

上面的代码只检查整个数组的下划线。我需要代码来检查数组中的每个值,如果在任何数组值中找到我描述的正则表达式,则回显错误。

2 个答案:

答案 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.