Удаление пробелов и ничего, что не является буквенно-цифровой

StackOverflow https://stackoverflow.com/questions/4210419

  •  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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top