Comment utiliser PHP pour supprimer tous les caractères qui ne sont PAS des caractères alpha, numériques, espace ou puncutation?
J'ai essayé ce qui suit, mais ça enlève la ponctuation.
preg_replace("/[^a-zA-Z0-9\s]/", "", $str);
preg_replace("/[^a-zA-Z0-9\s\p{P}]/", "", $str);
Exemple:
php > echo preg_replace("/[^a-zA-Z0-9\s\p{P}]/", "", "⟺f✆oo☃. ba⟗r!");
foo. bar!
\p{P}
correspond à tous les caractères de ponctuation Unicode (voir Propriétés Unicode caractère ). Si vous souhaitez uniquement autoriser des ponctuations spécifiques, ajoutez-les simplement à la classe de caractères annulée. Par exemple:
preg_replace("/[^a-zA-Z0-9\s.?!]/", "", $str);
Vous allez devoir lister explicitement la ponctuation car il n'y a pas de raccourci pour cela (par exemple, \s
est un raccourci pour les caractères d'espacement).
preg_replace('/[^a-zA-Z0-9\s\-=+\|!@#$%^&*()`~\[\]{};:\'",<.>\/?]/', '', $str);
$str = trim($str);
$str = trim($str, "\x00..\x1F");
$str = str_replace(array( ""","'","&","<",">"),' ',$str);
$str = preg_replace('/[^0-9a-zA-Z-]/', ' ', $str);
$str = preg_replace('/\s\s+/', ' ', $str);
$str = trim($str);
$str = preg_replace('/[ ]/', '-', $str);
J'espère que cela t'aides.