Удалите все не буквенно-цифровые символы с помощью preg replace
Как я могу удалить все не буквенно-цифровые символы из строки в PHP?
Это код, который я сейчас использую:
$url = preg_replace('/\s+/', '', $string);
Он заменяет только пробелы.
54
6 answers
$url = preg_replace('/[^\da-z]/i', '', $string);
106
Author: John Conde, 2017-05-05 12:25:17
Сначала подумайте, как бы я это сделал
$str = 'qwerty!@#$@#$^@#$Hello%#$';
$outcome = preg_replace("/[^a-zA-Z0-9]/", "", $str);
var_dump($outcome);
//string(11) "qwertyHello"
Надеюсь, это поможет!
15
Author: sevenadrian, 2012-07-04 01:27:54
Не уверен, почему никто другой этого не предложил, но это, кажется, самое простое регулярное выражение:
preg_replace("/\W|_/", "", $string)
Вы также можете увидеть это в действии здесь: http://phpfiddle.org/lite/code/0sg-314
13
Author: Chuck Le Butt, 2013-07-30 13:05:39
preg_replace('/[\s\W]+/', '', $string)
Кажется, работает, на самом деле пример был в документации PHP на preg_replace
4
Author: lisovaccaro, 2012-07-04 00:42:57
$alpha = '0-9a-z'; // what to KEEP
$regex = sprintf('~[^%s]++~i', preg_quote($alpha, '~')); // case insensitive
$string = preg_replace($regex, '', $string);
3
Author: Alix Axel, 2012-07-04 00:55:58
Вы можете использовать,
$url = preg_replace('/[^\da-z]/i', '', $string);
Вы можете использовать для символов юникода,
$url = preg_replace("/[^[:alnum:][:space:]]/u", '', $string);
2
Author: Damith Ruwan, 2017-06-26 07:31:03