J'ai une chaîne avec "\ u00a0", et j'ai besoin de la remplacer par "" str_replace échoue
J'ai besoin de nettoyer une chaîne qui vient (copier/coller) à partir de différentes de la suite Microsoft Office applications (ExcelAccèset Mot), chacun avec son propre ensemble de codage.
Je suis en utilisant json_encode à des fins de débogage afin d'être en mesure de voir chaque caractère codé.
Je suis en mesure de nettoyer tout ce que j'ai trouvé à ce jour (\r \n) avec str_replace, mais avec \u00a0 je n'ai pas de chance.
$string = '[email protected]\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0;[email protected]'; //this is the output from json_encode
$clean = str_replace("\u00a0", "",$string);
retourne:
mail@mail.com\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0;mail@mail.com
C'est exactement la même; elle ignore complètement \u00a0.
Est-il un moyen de contourner cela? Aussi, je me sens que je suis en train de réinventer la roue, est-il une fonction/classe complètement bandes TOUS les possibile char de CHAQUE encodage possible?
____EDIT____
Après les deux premières réponses, j'ai besoin de préciser que mon exemple NE fonctionne, parce que c'est la sortie de json_encode, pas la chaîne!
source d'informationauteur 0plus1
Vous devez vous connecter pour publier un commentaire.
Fonctionne pour moi, quand j'ai copier/coller votre code. Essayez de remplacer les guillemets dans votre
str_replace()
avec des guillemets simples, ou de s'échapper de la barre oblique inverse ("\\u00a0"
).En combinant
ord()
avecsubstr()
sur ma chaîne contenant \u00a0, j'ai trouvé la suite de la malédiction de travail:J'ai juste eu le même problème. Apparemment PHP json_encode renvoie la valeur null pour une chaîne avec un "espace insécable".
La Solution est de le remplacer par un espace normal:
J'espère que cela aide quelqu'un, il m'a fallu une heure pour comprendre.
Un point mineur: \u00a0 est en fait un espace insécable, c.f. http://www.fileformat.info/info/unicode/char/a0/index.htm
Alors il serait peut-être plus correct de le remplacer par " "
Que vous avez à faire cela avec des guillemets simples comme ceci:
Ou, si vous voulez utiliser les guillemets, vous avez pour échapper à la barre oblique inverse - qui ressemblerait à ceci:
Ce qui fonctionne, j'ai trouvé quelque part
Cela a fonctionné pour moi: