Удалить любую букву, которая не является алфавитом или цифрой? - PullRequest
0 голосов
/ 20 января 2012

Я использую 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

Ответы [ 2 ]

5 голосов
/ 20 января 2012

PHP preg_replace документы это то, что вы ищете:

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

Обратите внимание на модификатор iконец регулярного выражения - это делает поиск регистронезависимым.Если вы не возражаете против подчеркивания, вы можете просто:

$str = preg_replace('/[^\w]/', ' ', $str);
3 голосов
/ 20 января 2012

Первоначально, я бы пошел с этим (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
...