10
votes

Comment dépasser les caractères Unicode (de gauche_to_right_mark) d'une chaîne en PHP

J'essaie d'éliminer la marque gauche-droite (\ u200e) et la marque droite à gauche (\ u200f) à partir d'une chaîne avant de le coder comme JSON. Aucun des éléments suivants ne semble fonctionner:

$s = mb_ereg_replace("\u200e", '', $s);
$s = preg_replace("#\u200e#u", '', $s);
$s = preg_replace("#\u200e#", '', $s);


1 commentaires

Quel codage est la chaîne dans?


6 Réponses :


0
votes

Avez-vous essayé d'encoder votre fichier de script dans UTF-8 et de taper (ou de copier + coller) les caractères de là?


0 commentaires

0
votes

Qu'en est-il de l'utilisation de str_replace et codez ce caractère à l'aide de ses codes de caractères; Quelque chose comme ça, peut-être: xxx

et, dans votre cas, comme vous avez plusieurs caractères différents à remplacer, vous pouvez les remplacer tous dans un appel sur str_replace : xxx

fonctionne-t-il pour votre problème?


0 commentaires

6
votes

Votre évasion Unicode est fausse, cela devrait fonctionner: xxx

test: xxx

ou, utiliser str_replace () : xxx


3 commentaires

En fait, cela fonctionne. Mon test était mal conçu. Réponse mise à jour pour inclure str_replace (). pourrait probablement utiliser STRTR () également.


Qu'est-ce que c'est exactement \ x0e?


@Iankit \ x0e est l'équivalent REGEX de chr (0x20)



0
votes

Pourriez-vous essayer cela? son codage UTF8 de 200E et 200f xxx

ou avec str_replace xxx


0 commentaires

0
votes

Essayez ceci xxx


0 commentaires

9
votes

Après la lutte avec cette question pendant quelques jours, j'ai enfin trouvé la réponse!

$str = preg_replace('/(\x{200e}|\x{200f})/u', '', $str);


1 commentaires

travaillé pour moi où @ Tmont Réponse (avec des votes supérieurs) n'a pas