我使用preg_match
来允许输入中的字母和数字
if(!preg_match('/^[a-zA-Z0-9]+$/', $file_rename))
{
$error = true;
echo '<error elementid="file_rename" message="FILE - please use alphabets and numbers only" />';
}
如果我想删除任何非字母或数字的字母怎么办?
例如,
test_1
到
test 1
,或者
test&2
到
test 2
答案 0 :(得分:5)
PHP preg_replace
docs正是您所寻找的:
$str = preg_replace('/[^a-z0-9]/i', ' ', $str);
注意正则表达式末尾的i
修饰符 - 它使搜索不区分大小写。如果你不介意下划线,你可以选择:
$str = preg_replace('/[^\w]/', ' ', $str);
答案 1 :(得分:3)
最初,我会选择(unicode safe)
$newString = preg_replace('/[^\p{L}\p{N}]/u', ' ', $oldString);
如果你想留下现有的多个空间......
$newString = preg_replace('/[^\p{L}\p{N}\s]/u', ' ', $oldString);
如果要将连续的非字母数字字符压缩到单个空格中,请将其更改为
$newString = preg_replace('/[^\p{L}\p{N}]+/u', ' ', $oldString);
// note the + sign