web-dev-qa-db-fra.com

Supprimer tous les caractères non alphanumériques à l'aide de preg_replace

Comment puis-je supprimer tous les caractères non alphanumériques d'une chaîne en PHP?

C'est le code que j'utilise actuellement:

$url = preg_replace('/\s+/', '', $string);

Il ne remplace que les espaces vides.

62
lisovaccaro
$url = preg_replace('/[^\da-z]/i', '', $string);
117
John Conde

Au début, voici comment je le ferais

$str = 'qwerty!@#$@#$^@#$Hello%#$';

$outcome = preg_replace("/[^a-zA-Z0-9]/", "", $str);

var_dump($outcome);
//string(11) "qwertyHello"

J'espère que cela t'aides!

18
sevenadrian

Vous ne savez pas pourquoi personne d'autre n'a suggéré cela, mais cela semble être la regex la plus simple:

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

Vous pouvez le voir en action ici aussi: http://phpfiddle.org/lite/code/0sg-314

14
Chuck Le Butt
preg_replace('/[\s\W]+/', '', $string)

Semble fonctionner, l’exemple était en fait dans PHP documentation sur preg_replace

4
lisovaccaro
$alpha = '0-9a-z'; // what to KEEP
$regex = sprintf('~[^%s]++~i', preg_quote($alpha, '~')); // case insensitive

$string = preg_replace($regex, '', $string);
3
Alix Axel

Vous pouvez utiliser,

$url = preg_replace('/[^\da-z]/i', '', $string);

Vous pouvez utiliser pour les caractères unicode,

$url = preg_replace("/[^[:alnum:][:space:]]/u", '', $string);
3
Damith Ruwan