【发布时间】:2012-01-15 14:59:33
【问题描述】:
http://www.php.net/manual/en/filter.filters.flags.php
如何使用此函数将字符串剥离为仅 a-z、数字和 _ ?
【问题讨论】:
-
使用正则表达式
-
我不认为你可以用 filter_var 做到这一点,你需要看看如何用正则表达式做到这一点?
标签: php string sanitization
http://www.php.net/manual/en/filter.filters.flags.php
如何使用此函数将字符串剥离为仅 a-z、数字和 _ ?
【问题讨论】:
标签: php string sanitization
你必须使用回调过滤器并编写你的函数
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);
【讨论】:
显然你不能。因为你问的实际上是 65 到 90 和 97 到 122 之间的值。过滤器会去除数值小于 32 和大于 127 的字符。你应该改用正则表达式。
【讨论】: