|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : décembre 2008 Messages : 48 ![]() |
Bonjour,
Le problème : Normalement cette action devrait supprimer que caractères invisibles (et les caractères qui ne sont pas ascii ? ). Code :
echo preg_replace("#[^[:graph:]]#", '', 'exemple avec accent é et ø'); Sous Mac ou Linux : "exempleavecaccentet'" Mes tentatives : J'ai essayé plusieurs versions de php (php 5, php 5.2.x, 5.3.5), de changer l'encodage de la page (iso-8859-1, UTF-8 etc..) sous différent logiciel (eclips, dreaweaver, coda). J'ai essayé tout ceci sur Mac, Linux et windows xp. Le problème reste le même, j'ai l'impression de ne plus avancer malgré de nombreuse recherche sur Google. Je me tourne donc vers vous afin d'être guidé vers la bonne recherche à effectuer, car vraisemblablement je ne cherche pas la bonne chose. |
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
rajoute l'option u (PCRE8)
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : décembre 2008 Messages : 48 ![]() |
J'ai essayé ce que tu m'as dit sous Linux, Windows et Mac. Ça corrige bien le problème sur Linux (ce qui est le plus important pour moi) mais quand je suis sur le Mac la chaine retournée est vide.
Edit : MAC os x 10.6.5 j'utilise MAMP php 5.3.2 et 5.2.13 |
|
|
00
|
|
|
#4 | |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
Citation:
Code :
echo preg_replace('/\P{Xan}/u', '', 'exemple avec accent é et ø'); Code :
echo preg_replace('/\s/', '', 'exemple avec accent é et ø');
__________________
http://blog.stealth35.com/ |
|
|
|
00
|
|
|
#5 |
|
Nouveau Membre du Club
![]() Inscription : décembre 2008 Messages : 48 ![]() |
Je te remerci beaucoup !
Code :
preg_replace("#(?![ \n])[^[:graph:]]#S", '', $value); Le problème semble résolu sur tous les confins. Encore merci. |
|
|
00
|
|
|
#6 | |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
Citation:
__________________
http://blog.stealth35.com/ |
|
|
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Inscription : décembre 2008 Messages : 48 ![]() |
Non justement, je souhaite supprimer tous les caractères invisibles sauf les espaces et sauts de ligne \n (et non \r). Mais si l'on peut simplifier, je suis preneur.
edit : je ne suis pas pro du tout en expression régulière, mais si j'ai bien compris ce que j'ai fais ca ce traduit par. Si le caractère suivant n'est pas un espace ou \n et que c'est un caractère invisible on remplace par '' (du vide). |
|
|
00
|
|
|
#8 | |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
Citation:
ici il a supprimer les espaces... EDIT : et pourquoi avoir mis l'option S ?
__________________
http://blog.stealth35.com/ |
|
|
|
00
|
|
|
#9 |
|
Nouveau Membre du Club
![]() Inscription : décembre 2008 Messages : 48 ![]() |
Le faite de mettre l'option S sur mes expressions régulières qui ne sont pas délimiter je me suis rendu compte que sa à énormément réduit la vitesse modification.
Je crois que je m'en sors vraiment pas sur le coup, une idée ? |
|
|
00
|
|
|
#10 | ||
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
Citation:
dument que ca marche c'est bien, mais ton explication est contradition avec ton exemple : Citation:
__________________
http://blog.stealth35.com/ |
||
|
|
00
|
|
|
#11 |
|
Nouveau Membre du Club
![]() Inscription : décembre 2008 Messages : 48 ![]() |
En faite je souhaitais tout simplement supprimer dans une chaine tous les caractères non ascii et les caractères invisibles. Je ne sais pas jusqu'au combien de caractères la table ascii vas, mais elle ne se fini pas à \x7E
Tout en gardant l'espace et \n [ \n] L'option [:graph:] me sembler bonne mis à part qu'apparemment sous Windows XP elles prend en compte tous les caractères ASCII et sous mac et linux elle sembler être [\x21-\x7E]. Je ne comprends pas vraiment pourquoi. une chaine : "un exemple \n une nouvelle ligne \t tabulation" devrais retourné "un exemple \n une nouvelle ligne tabulation". Si on y ajouter un caractère japonais par exemple, qui n'est normalement existant dans une table ascii devrait être supprimer puisqu'il est sensé être invisible. |
|
|
00
|
|
|
#12 |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
en ASCII y'a que 128 caractères, un é c'est pas un caractère ascii
http://en.wikipedia.org/wiki/ASCII
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#13 |
|
Nouveau Membre du Club
![]() Inscription : décembre 2008 Messages : 48 ![]() |
Je te remerci même si comme ca ca n'en pas l'air, ta réponse m'a beaucoup aider. J'ai essayer de comprendre à quoi correspondé l'Hex dans le preg_match et j'ai compris qu'il correspond au charset de la page j'imagine (donc dans mon cas ISO-8859-1).
http://fr.wikipedia.org/wiki/ISO_8859-1 Donc si je prend du \x21 au caractère ~ puis de ¡ à ÿ. J'aurais donc que des caractère iso-8859-1 visible ? [\x21-7E\xA1-\xFF] |
|
|
00
|
|
|
#14 | |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
Citation:
Code :
preg_replace('/[\x0A\x20-\x7E\xA0-\xFF]/', '', $value);
__________________
http://blog.stealth35.com/ |
|
|
|
00
|
|
|
#15 |
|
Nouveau Membre du Club
![]() Inscription : décembre 2008 Messages : 48 ![]() |
Je voulais nettoyer un texte de caractère inutile. Je te remercie d'avoir passé du temps à m'aider.
|
|
|
00
|
|
|
#16 |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
essaye ce que je t'ai mis
__________________
http://blog.stealth35.com/ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com