删除任何不是字母表或数字的字母


Remove any letter which is not an alphabet or a number?

我使用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

PHP preg_replacedocs就是您想要的:

$str = preg_replace('/[^a-z0-9]/i', ' ', $str);

注意正则表达式末尾的i修饰符--它使搜索不区分大小写。如果你不介意下划线,你也可以选择:

$str = preg_replace('/[^'w]/', ' ', $str);

最初,我会使用这个(unicode安全)

$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