我有两个颜色选择器字段,我正在使用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] 删除。
我来说两句