Как удалить не буквенно-цифровые символы?

Мне нужно удалить все символы из строки, которые не находятся в az AZ 0-9 или не являются пробелами.

У кого-нибудь есть функция для этого?

Похоже, вы почти знали, что вы хотели сделать, вы в основном определили его как регулярное выражение.

 preg_replace("/[^A-Za-z0-9 ]/", '', $string); 

Для символов Unicode это:

 preg_replace("/[^[:alnum:][:space:]]/u", '', $string); 

Регулярное выражение – ваш ответ.

 $str = preg_replace('/[^az\d ]/i', '', $str); 
  • i означает нечувствительность к регистру.
  • ^ означает, не начинается с.
  • \d соответствует любой цифре.
  • az соответствует всем символам между a и z . Из-за параметра i вам не нужно указывать az и AZ .
  • После \d есть пробел, поэтому в этом регулярном выражении допускаются пробелы.

вот для этого очень простое регулярное выражение:

 \W|_ 

и используется так, как вам нужно (с разделителем прямого / слэша).

 preg_replace("/\W|_/", '', $string); 

Протестируйте его здесь с помощью этого замечательного инструмента, который объясняет, что делает регулярное выражение:

http://www.regexr.com/

 [\W_]+ 

 $string = preg_replace("/[\W_]+/u", '', $string); 

Он выбирает все не AZ, az, 0-9 и удаляет его.

См. Пример здесь: https://regexr.com/3h1rj

Я тоже искал ответ, и мое намерение состояло в том, чтобы очистить каждую не-альфу, и не должно быть более одного места.
Итак, я изменил ответ Алекса на это, и это работает для меня preg_replace('/[^az|\s+]+/i', ' ', $name)
sy8ed sirajul7_islam выражение выше получило sy8ed sirajul7_islam для sy ed sirajul islam
Объяснение: regex будет проверять NOT ANY от a до z в случае нечувствительного способа или более чем в одном пробеле, и он будет преобразован в одно пространство.

 preg_replace("/\W+/", '', $string) 

Вы можете протестировать его здесь: http://regexr.com/

я использую это:

 //to remove non english character $str = preg_replace('/[^\00-\255]+/u', '', $str);