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

我离开德基奇

我有两个颜色选择器字段,我正在使用preg_match它们进行验证。这是一个有效的代码,它可以按预期验证。
看起来像这样(我将为第一个字段提供代码,因为第二个字段基本相同):

function display_bg_setting($args){
//Get our options from register settings (my_theme_color_options);
$GetColorpickerValue = (array) get_option('my_theme_color_options');

if(isset($GetColorpickerValue['display_bg'])) {
$get_options = $GetColorpickerValue['display_bg'];
}   else {
     $GetColorpickerValue['display_bg']='';
     $get_options = $GetColorpickerValue['display_bg'];
    }
echo'<input type="text" id="display_bg" value="'.$get_options.'" name="my_theme_color_options[display_bg]" />';

现在的问题:

显然,我的主题中将有更多的拾色器字段(15-20个字段),因此像上面的代码一样验证每个字段,而我尝试使用回调函数并同时验证我的颜色。这是我失败的地方,我的代码无法验证颜色。

回调看起来像这样:

  function validate_color_options_and_other_fields($options){
  //My two colopickers fields stored as an array
  $option = array($options['wrapper_background_color'],$options['display_bg']);

  foreach($option as $options){
    if(preg_grep('/#([a-f]|[A-F]|[0-9]){3}(([a-f]|[A-F]|[0-9]){3})?\b/', $options)) //hex color is valid

    {
         return $options;//Returns colorpicker fields
    } 


     else {//Returns blank
     $options['wrapper_background_color']='';
     $options['display_bg']='';
     } 

    }//End foreach


   return $options;//Returns all other options(checkboxses,select fields...)


}//Function end

这就是我要做的:
我把一些非颜色值第一场真彩色第二场,因此输出将是什么在第一场和真彩色的第二场,反之亦然(这是部分地方。我的回调失败。)。
或者我两个字段放置了一些非颜色值,并且两个字段没有返回任何(这是我的回调起作用的部分。)


你们能帮我这个忙吗?

克里斯 - -

您正在使用preg_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);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正则表达式颜色的十六进制模式

来自分类Dev

正则表达式文件,名称和数字/十六进制交替显示

来自分类Dev

用于bbcode中的十六进制颜色代码的正则表达式?

来自分类Dev

用于搜索十六进制颜色代码的正则表达式

来自分类Dev

十六进制正则表达式

来自分类Dev

正则表达式十六进制,带例外

来自分类Dev

只允许十六进制正则表达式

来自分类Dev

正则表达式:如何以十六进制指定覆盖Unicode符号集合的范围

来自分类Dev

使用正则表达式将十六进制转换为 ascii

来自分类Dev

Perl:正则表达式,将十进制更改为十六进制

来自分类Dev

十六进制和八进制ASCII正则表达式

来自分类Dev

在C#中使用/不使用正则表达式清除不需要的十六进制字符

来自分类Dev

如何在C中编写正则表达式以查找字符串是否为十六进制

来自分类Dev

使用记事本++正则表达式更改十六进制数字大小写

来自分类Dev

匹配#tags但不匹配十六进制代码的正则表达式

来自分类Dev

正则表达式匹配8或12或32十六进制数

来自分类Dev

正则表达式,用于匹配十六进制表示法的灰色

来自分类Dev

匹配十六进制表示的字节正则表达式

来自分类Dev

Python正则表达式搜索十六进制字节

来自分类Dev

C#正则表达式异常-十六进制数字不足

来自分类Dev

Vim正则表达式-替换中的十六进制字符?

来自分类Dev

正则表达式问题删除十六进制LF

来自分类Dev

正则表达式以匹配十六进制和复杂字符之间的数字

来自分类Dev

C#正则表达式异常-十六进制数字不足

来自分类Dev

正则表达式:非法的十六进制转义序列

来自分类Dev

Vim正则表达式-替换中的十六进制字符?

来自分类Dev

正则表达式,用于字符串的十六进制组合

来自分类Dev

用于匹配十六进制数字的正则表达式?

来自分类Dev

检查数字是 3 位还是 6 位十六进制的正则表达式

Related 相关文章

  1. 1

    正则表达式颜色的十六进制模式

  2. 2

    正则表达式文件,名称和数字/十六进制交替显示

  3. 3

    用于bbcode中的十六进制颜色代码的正则表达式?

  4. 4

    用于搜索十六进制颜色代码的正则表达式

  5. 5

    十六进制正则表达式

  6. 6

    正则表达式十六进制,带例外

  7. 7

    只允许十六进制正则表达式

  8. 8

    正则表达式:如何以十六进制指定覆盖Unicode符号集合的范围

  9. 9

    使用正则表达式将十六进制转换为 ascii

  10. 10

    Perl:正则表达式,将十进制更改为十六进制

  11. 11

    十六进制和八进制ASCII正则表达式

  12. 12

    在C#中使用/不使用正则表达式清除不需要的十六进制字符

  13. 13

    如何在C中编写正则表达式以查找字符串是否为十六进制

  14. 14

    使用记事本++正则表达式更改十六进制数字大小写

  15. 15

    匹配#tags但不匹配十六进制代码的正则表达式

  16. 16

    正则表达式匹配8或12或32十六进制数

  17. 17

    正则表达式,用于匹配十六进制表示法的灰色

  18. 18

    匹配十六进制表示的字节正则表达式

  19. 19

    Python正则表达式搜索十六进制字节

  20. 20

    C#正则表达式异常-十六进制数字不足

  21. 21

    Vim正则表达式-替换中的十六进制字符?

  22. 22

    正则表达式问题删除十六进制LF

  23. 23

    正则表达式以匹配十六进制和复杂字符之间的数字

  24. 24

    C#正则表达式异常-十六进制数字不足

  25. 25

    正则表达式:非法的十六进制转义序列

  26. 26

    Vim正则表达式-替换中的十六进制字符?

  27. 27

    正则表达式,用于字符串的十六进制组合

  28. 28

    用于匹配十六进制数字的正则表达式?

  29. 29

    检查数字是 3 位还是 6 位十六进制的正则表达式

热门标签

归档