Как удалить все не буквенно-цифровые символы из строки в PHP?Удалить все небуквенные символы, используя preg_replace
Это код, который я в настоящее время с помощью:
$url = preg_replace('/\s+/', '', $string);
Это только заменяет пробелы.
Как удалить все не буквенно-цифровые символы из строки в PHP?Удалить все небуквенные символы, используя preg_replace
Это код, который я в настоящее время с помощью:
$url = preg_replace('/\s+/', '', $string);
Это только заменяет пробелы.
$url = preg_replace('/[^\da-z]/i', '', $string);
[Этот ответ поддерживает unicode ] (http://stackoverflow.com/a/17151182/99923) – Xeoncross
В случае, если на первый взгляд кто-то на мгновение путал комментарий Xeoncross, его точка зрения заключалась в том, что ответ * не поддерживает символы Unicode. Но решение в ссылке Xeoncross * делает *. – orrd
preg_replace('/[\s\W]+/', '', $string)
Кажется, работает, на самом деле пример был в PHP документации на preg_replace
Имейте в виду, что это будет * держать * подчеркивания, поскольку они считаются символами слов и также сохраняют пробелы –
Я не знал о символах подчеркивания, но это не поддерживает пробелы. – lisovaccaro
$alpha = '0-9a-z'; // what to KEEP
$regex = sprintf('~[^%s]++~i', preg_quote($alpha, '~')); // case insensitive
$string = preg_replace($regex, '', $string);
В первом принять это, как я бы это сделать
$str = '[email protected]#[email protected]#$^@#$Hello%#$';
$outcome = preg_replace("/[^a-zA-Z0-9]/", "", $str);
var_dump($outcome);
//string(11) "qwertyHello"
Надеется, что это помогает!
это не будет работать для нелатинских букв –
Не знаю, почему никто еще не предложил, но это, кажется, самый простой регулярное выражение:
preg_replace("/\W|_/", "", $string)
Вы можете увидеть его в действии здесь, тоже: http://phpfiddle.org/lite/code/0sg-314
Простейшим и эффективным в то же время является 'preg_replace ("/[\ W _] +/"," ", $ string)'. –
Вы можете использовать,
$url = preg_replace('/[^\da-z]/i', '', $string);
Вы можете использовать юникод символов,
$url = preg_replace("/[^[:alnum:][:space:]]/u", '', $string);
Возможный дубликат [Как удалить не буквенно-цифровые символы в строке? (включая ß, Ê и т. д.)] (http://stackoverflow.com/questions/7271607/how-do-i-remove-non-alphanumeric-characters-in-a-string-including-ss-e-etc) – mario
@mario: Это немного отличается, поскольку речь идет о Unicode. Я уверен, что идеальный дубликат существует ... –
Возможный дубликат [Удалить не-буквенно-цифровые символы] (http://stackoverflow.com/questions/659025/remove-non-alphanumeric-characters) – trejder