2010-04-21 8 views
1

Je souhaite filtrer un String en utilisant le caractère générique \ w, mais il ne couvre malheureusement pas les trémas.preg_replace: les caractères génériques ne correspondent pas aux caractères truqués

$i = "Die Höhe";  
$x = preg_replace("/[^\w\s]/","",$i); 
echo $x; // "Die Hhe"; 

Cependant, je peux ajouter tous les personnages à preg_replace, mais ce n'est pas très élégante, puisque la liste deviendra très long. ATM, je prépare cela seulement pour l'allemand, mais il y a plus de langues à venir.

$i = "Die Höhe";  
$x = preg_replace("/[^\w\säöüÄÖÜß]/","",$i); 
echo $x; // "Die Höhe"; 

Existe-t-il un moyen de tous les faire correspondre à la fois?

Répondre

6

chaînes Vous êtes évidemment UTF-8, de sorte que vous voulez que les propriétés 'u' drapeau et unicode au lieu de \ w

$x = preg_replace('/[^\p{L}\p{N} ]/u',"",$i); 
1

cela devrait supprimer tous, à mon avis, les caractères non significatifs:

$val = "Die Höhe"; 
$val = preg_replace('/[^\x20-\x7e\xa1-\xff]+/u', '', $val); 
echo $val; // "Die Höhe" 
Questions connexes