2010-08-09 16 views
2

j'utilise la classe AOP mais je triying pour supprimer tous les caractères sauf ...:Aide avec preg_replace et les caractères spéciaux

function cleaner($str){ 
    return preg_replace('/[^a-zA-Z0-9éàêïòé\,\.\']/',' ',trim($str)); 
} 

Comme vous pouvez le voir, il est une fonction simple, mais il supprime tous les caractères éàêïòé

exemple: propre ('# $ < $ <> - // la souris mangée par was le chat') // retourne

la Mang e à souris pa r le chat (La souris a été mangé par le chat :))

Toute aide APPRÉCIÉ

+0

Cela arrive parce que le support unicode de PHP est cassé. – quantumSoup

+0

Merci pour votre commentaire, donc cela signifie que j'ai attendu pour PHP 6 ?? – jartaud

Répondre

1
$str = '$#$<<>-//La souris a été mangée par le chat '; 
$str = preg_replace('/[^a-zA-Z0-9éàêïòé\,\.\']/u',' ',trim($str)); 

$str = '$#$<<>-//La souris a été mangée par le chat '; 
$str = preg_replace('/[^\p{L}\,\.\']/u',' ',trim($str)); 

Les deux extraits ont travaillé pour moi, sur PHP 5.3. La deuxième expression régulière est moins restreinte et accepte toutes les lettres Unicode.

+0

Merci pour votre aide. J'utilise Npp et il ajoute ** ï »¿** au fichier. Je pense que ces caractères cassent l'encodage. – jartaud

+0

@jartaud: Quelle version de PHP utilisez-vous? – kiamlaluno

+0

Ces caractères sont-ils ajoutés au début du fichier? – kiamlaluno