【问题标题】:Using filter_var to sanitize a string使用 filter_var 清理字符串
【发布时间】:2012-01-15 14:59:33
【问题描述】:

http://www.php.net/manual/en/filter.filters.flags.php

如何使用此函数将字符串剥离为仅 a-z、数字和 _ ?

【问题讨论】:

  • 使用正则表达式
  • 我不认为你可以用 filter_var 做到这一点,你需要看看如何用正则表达式做到这一点?

标签: php string sanitization


【解决方案1】:

你必须使用回调过滤器并编写你的函数

function my_filter($value)
{
    return preg_replace('/[^a-z\d_]/iu', '', $value);
}
$var = filter_var($var, FILTER_CALLBACK, array('options' => 'my_filter'));

如果您只想在过滤后的 var 中使用小写字母,请从正则表达式中删除 'i' 标志。

当然,在这里使用 filter_var 只是多余的代码。这更短。

$var = preg_replace('/[^a-z\d_]/iu', '', $var);

【讨论】:

    【解决方案2】:

    显然你不能。因为你问的实际上是 65 到 90 和 97 到 122 之间的值。过滤器会去除数值小于 32 和大于 127 的字符。你应该改用正则表达式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多