有没有办法防止制表符被FILTER_FLAG_STRIP_LOW选项过滤?



它们是正则表达式还是删除 php filter_var 函数的 FILTER_SANITIZE_STRING 过滤器FILTER_FLAG_STRIP_LOW选项所做的相同字符的更好方法,除了制表符?

有关FILTER_SANITIZE_STRING筛选器和FILTER_FLAG_STRIP_LOW选项,请参阅 https://www.php.net/manual/en/filter.filters.sanitize.php。

我正在使用带有FILTER_SANITIZE_STRING过滤器的 php filter_var 函数,FILTER_FLAG_NO_ENCODE_QUOTES、FILTER_FLAG_STRIP_LOW、FILTER_FLAG_STRIP_HIGH选项来删除相当多的字符和"单词"模式,但它也删除了制表符,我不想删除。

如果有很好的方法可以删除制表符以外的"低"字符,那么我可以从filter_var调用中删除FILTER_FLAG_STRIP_LOW过滤器选项,并将结果"馈送"到常规快速替换"过滤器"或更好,并"完成"验证。

是的,您可以使用preg_replace删除制表符 (\x09( 以外的"低"字符。

$input = "ab x00x01trnAcd0x19";
$santtizeString = preg_replace('~[x00-x08x0A-x1F]~u','',$input);

$ 输入的十六进制表示法为

\x61\x62\x20\x00\x01\x09\x0d\x0a\x41\x63\x64\x30\x19

除制表符 \ x09 外,所有代码为 <\ x20 的字符都将被删除。结果是一个十六进制符号

\x61\x62\x20\x09\x41\x63\x64\x30

或字符串"ab \tAcd0"。

最新更新