php - 有没有办法防止制表符被 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 过滤器和 FILTER_FLAG_NO_ENCODE_QUOTES、FILTER_FLAG_STRIP_LOW、FILTER_FLAG_STRIP_HIGH 选项的 php filter_var 函数来删除相当多的字符和“单词”模式,但它也删除了我不想删除的制表符。
如果有去除制表符以外的“低”字符的好方法,那么我可以从 filter_var 调用中删除 FILTER_FLAG_STRIP_LOW 过滤器选项,并将结果“馈送”到正则表达式替换“过滤器”或更好,然后“完成”验证。
解决方案
是的,使用 preg_replace 您可以删除制表符 (\x09) 以外的“低”字符。
$input = "ab \x00\x01\t\r\nAcd0\x19";
$santtizeString = preg_replace('~[\x00-\x08\x0A-\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”。
推荐阅读
- php - 如何更改数组中的值?
- c++ - 当捕获 lambda 仿函数在另一个作用域/函数中被调用时,实际上会发生什么?
- c# - 如何将图像上传到 LinkedIn 以在 C# 中发布 Ugc 图像
- python - 将二进制值转换为日期时间 python
- javascript - 尝试使用按钮切换布尔变量
- angular - 为什么我使用获取请求角度时出错?
- php - 使用 cURL 和 PHP 连接 api.dynadot.com 失败
- javascript - 如何获取用户的表单输入并将其用于事件元素?
- java - Android Studio:如何将 .sfb 文件从一个项目复制/粘贴到另一个项目?
- c - 奇怪的类型转换行为