Удаление всего, кроме буквенно-цифровых символов из строки в PHP

Мне нужна строка регулярного выражения или другая строка, которая может заменить все, кроме буквенно-цифровых символов (a-z и 0-9) из строки. Все вещи, такие как ,@#$(@*810, должны быть удалены. Любые идеи?

Изменить: мне теперь нужно это, чтобы разделить все, но разрешить точки, поэтому все, кроме a-z, 1-9, .. Идеи?

Ответ 1

$string = preg_replace("/[^a-z0-9.]+/i", "", $string);

Соответствует одному или нескольким символам не a-z 0-9 [без учета регистра], или "." и заменяется на ""

Ответ 2

Мне нравится использовать [^ [: alnum:]] для этого, меньше места для ошибки.

preg_replace('/[^[:alnum:]]/', '', "(ABC)-[123]"); // returns 'ABC123'

Ответ 3

/[^a-z0-9.]/

должен сделать трюк

Ответ 4

Try:

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

/i означает нечувствительность к регистру (если вам это нужно, конечно).

Ответ 5

Это также заменяет ничего, кроме цифры, символа слова или периода с подчеркиванием. Полезно для имен файлов.

$clean = preg_replace('/[^\d\w.]+/', '_', $string);