php - 使用像 filter_var_array() 这样的 PHP 过滤器函数有没有办法检查输入字符串的长度是否小于某个值

标签 php filter callback

我一直在玩 PHP 过滤器库。我喜欢它,但我无法执行简单的过滤功能。我本质上想使我的输入数组中的那些字符串值无效并且比某个值长。
有没有办法做到这一点,

$data = array('input_string_array' => array('aaa', 'abaa', 'abaca'));
$args = array(
    'component'    => array('filter'    => FILTER_DEFAULT,
                            'flags'     => FILTER_REQUIRE_ARRAY, 
                            'options'   => array('min_length' => 1, 'max_length' => 10)
                           )
);

var_dump(filter_var_array($data, $args));

我试过这个,它给了我错误。因为大概没有可用的 min_length/max_length 选项。但是如何实现呢?还有一个地方提到了所有此类选项,例如 max_range、min_range、regexp。

我还有另一个疑问,在过滤器中,在 FILTER_CALLBACK 过滤器中。我想知道是否有办法将数据以外的参数传递给被调用函数?像这样的东西,
echo filter_var($string, FILTER_CALLBACK, array("options"=> array("lengthChecker", "5")));

非常感谢您的帮助。

最佳答案

除非有更好,更直接的filter + option,否则您可以使用FILTER_VALIDATE_REGEXP

$data = array('input_string_array' => array('', 'aaa', 'abaa', 'abaca'));
$args = array(
  'input_string_array' => array(
    'filter' => FILTER_VALIDATE_REGEXP,
    'flags'     => FILTER_REQUIRE_ARRAY|FILTER_NULL_ON_FAILURE,
    'options'   => array('regexp'=>'/^.{1,3}$/')
  )
);
var_dump(filter_var_array($data, $args));

打印
array(1) {
  ["input_string_array"]=>
  array(4) {
    [0]=>
    NULL
    [1]=>
    string(3) "aaa"
    [2]=>
    NULL
    [3]=>
    NULL
  }
}

要摆脱NULL元素,您可以使用例如array_filter()

关于php - 使用像 filter_var_array() 这样的 PHP 过滤器函数有没有办法检查输入字符串的长度是否小于某个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1489260/

相关文章:

objective-c - 如何在 SWIFT 中实现 Objective-C 回调处理程序?

PHP array_walk require_once

php - 如何从 php 中的数据库中选择行,其中日期字段是 future 7 天

jQuery 搜索和过滤表

symfony - 在configureDatagridFilters中创建自定义类型字段 - Sonata Admin

filter - SUMIF 与 Google 电子表格中的 FILTER 函数一起使用

lambda - 将参数传递给 TypeScript 中的回调函数

javascript - 如何使用clearTimeout停止特定的setTimeout循环

php - 我如何创建一种绕过密码确认和电子邮件确认的方法?

php - 尝试用 Javascript 填充字段,由 PHP 回显