Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用循环正则表达式和数组验证十六进制颜色?_Php_Regex_Wordpress_Validation_Foreach - Fatal编程技术网

Php 如何使用循环正则表达式和数组验证十六进制颜色?

Php 如何使用循环正则表达式和数组验证十六进制颜色?,php,regex,wordpress,validation,foreach,Php,Regex,Wordpress,Validation,Foreach,我有两个colorpicker字段,我正在使用preg\u match验证它们。这是一个工作代码,按预期进行验证看起来是这样的(我将给出第一个字段的代码,因为第二个字段基本相同): 这就是我要做的:我在第一个字段上放置了一些非颜色值,在第二个字段上放置了一些实色值,这样第一个字段上的输出将为nothing,第二个字段上的输出将为real color,反之亦然。(这是回调失败的部分。)或者我在两个字段上都放置了一些非颜色值,但在两个字段上都不返回任何内容(这是我的回调工作的部分。) 你们能帮我解决

我有两个colorpicker字段,我正在使用
preg\u match
验证它们。这是一个工作代码,按预期进行验证
看起来是这样的(我将给出第一个字段的代码,因为第二个字段基本相同):

这就是我要做的:
我在第一个字段上放置了一些非颜色值,在第二个字段上放置了一些实色值,这样第一个字段上的输出将为nothing,第二个字段上的输出将为real color,反之亦然。(这是回调失败的部分。)
或者我在两个字段上都放置了一些非颜色值,但在两个字段上都不返回任何内容(这是我的回调工作的部分。)



你们能帮我解决这个问题吗

您使用的是
preg\u grep
,它使用数组作为输入,但您使用的是foreach的字符串。 我认为最简单的方法是使用如下代码:

$options = array('#fffAA9', '#a65c23');

foreach ($options as $value)
{
    preg_match('/(#[a-f0-9]{3}([a-f0-9]{3})?)/i', $value, $matches);
    if (isset($matches[1]))
    {
        // validated ok
        var_dump($matches[1]);
    }
    else
    {
        // no match
    }
}
编辑: 另外,您还可以使用preg_grep进行更简单的操作:

public function actionValidate($options)
{
//  $options = array('#fffAA9', '#a65c23');

    return preg_grep('/^(#[a-f0-9]{3}([a-f0-9]{3})?)$/i', $options);
}

在validate函数中,您混合了$options/$option变量。在foreach中覆盖$option变量时,不会使用该变量。
$options = array('#fffAA9', '#a65c23');

foreach ($options as $value)
{
    preg_match('/(#[a-f0-9]{3}([a-f0-9]{3})?)/i', $value, $matches);
    if (isset($matches[1]))
    {
        // validated ok
        var_dump($matches[1]);
    }
    else
    {
        // no match
    }
}
public function actionValidate($options)
{
//  $options = array('#fffAA9', '#a65c23');

    return preg_grep('/^(#[a-f0-9]{3}([a-f0-9]{3})?)$/i', $options);
}