首页 > 解决方案 > 有没有办法在给定的 PHP 清理或验证过滤器中传递多个过滤器标志选项?

问题描述

对于给定的文本字段数据输入,我想将 ASCII 字符值限制为大于 31 且小于 128。

我了解如何为给定的清理过滤器 ID 传递一个标志选项。是否可以传递两个不冲突的标志选项?

https://www.php.net/manual/en/filter.filters.flags.php https://www.php.net/manual/en/filter.filters.sanitize.php

我试图使用额外的逗号传递一个额外的标志。

filter_var($data, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW, FILTER_FLAG_STRIP_HIGH);

我希望能够传递两个不冲突的选项,例如FILTER_FLAG_STRIP_LOW,FILTER_FLAG_STRIP_HIGH组合或FILTER_FLAG_ENCODE_LOW,FILTER_FLAG_ENCODE_HIGH组合。由于函数的语法无效,无法确定结果。

标签: php

解决方案


您需要对|标志值进行按位或(运算符)并将其传递:

filter_var($data, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH);

手册

options 选项
的关联数组或标志的按位分离

"bitwise disjunction"是另一种说法bitwise OR


推荐阅读