Удаление пробелов и ничего, что не является буквенно-цифровой
-
25-09-2019 - |
Вопрос
Я пытаюсь удалить все, что не является буквенно-цифровым, или это пространство с _:
$filename = preg_replace("([^a-zA-Z0-9]|^\s)", "_", $filename);
Что я здесь делаю неправильно, это не работает. Я пробовал несколько комбинаций Regex ... (и я вообще не очень яркий).
Решение
Попробуй это:
$filename = preg_replace("/[^a-zA-Z0-9 ]/", "_", $filename);
Другие советы
$filename = preg_replace('~[\W\s]~', '_', $filename);
Если я правильно понимаю ваш вопрос, вы хотите заменить любое пространство ( ы) или не буквенно-цифровую ( W) символ) с помощью _ '. Это должно делать нормально. ПРИМЕЧАНИЕ. W прописная буква, в отличие от строчных букв w, которое будет соответствовать буквенно-цифровым символам.
Решение, которое работает для меня:
$filename = preg_replace('/\W+/', '_', $filename);
То +
соответствует блокам одного или нескольких возникновений \W
Whitespace, который включает в себя пробелы и все не буквенно-цифровые символы
Пытаться
$filename = preg_replace("/[a-zA-Z0-9]|\s/", "_", $filename);
Не связан с StackOverflow