它们是正则表达式还是删除 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"。