Извлечение всего, кроме буквенно-цифровых символов из строки в PHP - PullRequest
33 голосов
/ 08 мая 2009

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

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

Ответы [ 5 ]

64 голосов
/ 08 мая 2009
$string = preg_replace("/[^a-z0-9.]+/i", "", $string);

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

19 голосов
/ 08 мая 2009

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

preg_replace('/[^[:alnum:]]/', '', "(ABC)-[123]"); // returns 'ABC123'
2 голосов
/ 08 мая 2009

Попробуйте:

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

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

2 голосов
/ 08 мая 2009
/[^a-z0-9.]/

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

0 голосов
/ 08 июля 2013

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

$clean = preg_replace('/[^\d\w.]+/', '_', $string);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...