Удаление пробелов и всего, что не является буквенно-цифровым - PullRequest
6 голосов
/ 18 ноября 2010

Я пытаюсь удалить все, что не является буквенно-цифровым или является пробелом с _:

$filename = preg_replace("([^a-zA-Z0-9]|^\s)", "_", $filename);

Что я здесь делаю не так, похоже, не работает. Я пробовал несколько комбинаций регулярных выражений ... (и вообще я не очень умный).

Ответы [ 4 ]

11 голосов
/ 18 ноября 2010

Попробуйте это:

$filename = preg_replace("/[^a-zA-Z0-9 ]/", "_", $filename);
7 голосов
/ 18 ноября 2010
$filename = preg_replace('~[\W\s]~', '_', $filename);

Если я правильно понимаю ваш вопрос, вы хотите заменить любой пробел (\ s) или не алфавитно-цифровой (\ W) символ на '_'.Это должно быть хорошо.Обратите внимание, что \ W прописными буквами, а не строчными \ w, которые будут соответствовать буквенно-цифровым символам.

2 голосов
/ 14 октября 2013

Решение, которое работает для меня:

$filename = preg_replace('/\W+/', '_', $filename);

+ соответствует блокам одного или нескольких вхождений \W пробел, который включает пробелы и все не алфавитно-цифровые символы

0 голосов
/ 18 ноября 2010

Попробуйте

$filename = preg_replace("/[a-zA-Z0-9]|\s/", "_", $filename);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...