Je suis en train de prendre une chaîne UTF-8 qui ressemble à:PHP -Multibyte expression régulière pour supprimer tous les caractères, mais ... s'il vous plaît aider
& q |艝 隭) R 墢 LQ28} 徫 廵 g'Y 鑽 妽 踒 F
et dépouiller tout sauf les caractères chinois qu'ils sont 4E00-9FA5 hex et je voudrais ne garder que les caractères de la chaîne. Je l'ai essayé de prendre cette ligne qui ne laisse que valides caractères US:
preg_replace('/[^\x20-\x7E]/', '', $str);
à cette:
preg_replace('/[^\x4E00-\x9FA5]/u', '', $str);
mais il sort rien .... que je manque quelque chose? Je ne suis pas très bon avec les expressions régulières
Également lorsque j'essaie d'utiliser mb_eregi_replace(); avec ou sans le modificateur/u (à mon avis, mb_eregi_replace devrait déjà avoir un support multi-octets, je n'ai pas d'erreur mais ma chaîne reste inchangée.) –
Ces caractères n'ont pas de sens en chinois, il est plus probable que vous n'utilisiez pas le bon encodage. – kennytm
Vous dites que vous avez une chaîne UTF-8, mais alors que vous êtes intéressé par la gamme 4e00-9fa5, cette plage fait référence aux valeurs Unicode (UCS-2) mais pas aux flux UTF-8, qui sont Vous pouvez le dire car, par exemple, la séquence 4e 00 en UTF-8 est composée de deux caractères et non d'un seul – borrible