REmplacement de caractères
madmaskx
Messages postés
129
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai un soucis pour transformer mes caractères spéciaux. J'ai trouvé la fonction suivante sur le net
que j'utilise dans cette boucle :
Aucune erreur ne m'est renvoyée et la boucle fait son job. Sauf que la fonction filter ne fais que supprimer les caractères indésirables, elle ne les remplace pas. En gros elle ne remplace que le dernier groupe des 2 variables, c.a.d. tout ce qu'on a pas remplacé jusque là par rien. Je donne le lien pour une explication plus complète de la fonction :
http://www.wikistuce.info/doku.php/php/supprimer_tous_les_caracteres_speciaux_d-une_chaine
La fonction n'est pas la première présentée mais une variante trouvée plus bas (avec exactement les mêmes effets)
J'ai lu que les fonction de remplacement de caractères avaient un peu de mal avec utf-8 mais mon document et ma DB sont en ISO 8859-1 (latin-1).
Quelqu'un a une idée ?
Merci d'avance.
J'ai un soucis pour transformer mes caractères spéciaux. J'ai trouvé la fonction suivante sur le net
function filter($str) { $entree = array('#[áàâäã]#','#[ÁÀÂÄÃ]#','#[éèêë]#','#[ÉÈÊË]#','#[íìîï]#','#[ÍÌÎÏ]#','#[óòôöõ]#','#[ÓÒÔÖÕ]#','#[úùûü]#','#[ÚÙÛÜ]#','#ÿ#','#Y#','#ç#','#Ç#','# #','#[^a-zA-Z0-9_-]#'); $sortie = array('a','A','e','E','i','I','o','O','u','U','y','Y','c','C','_' ,''); return preg_replace($entree,$sortie,$str); }
que j'utilise dans cette boucle :
for ($i=0;$i<$tab_length;$i++){ echo "<p>"; #echo $i; #echo " : "; foreach ($donnees[$i] as $value){ $value=strtolower($value); $value=filter($value); #<- ICI echo $value; echo " "; #exit(); } #exit(); echo "</p>"; }
Aucune erreur ne m'est renvoyée et la boucle fait son job. Sauf que la fonction filter ne fais que supprimer les caractères indésirables, elle ne les remplace pas. En gros elle ne remplace que le dernier groupe des 2 variables, c.a.d. tout ce qu'on a pas remplacé jusque là par rien. Je donne le lien pour une explication plus complète de la fonction :
http://www.wikistuce.info/doku.php/php/supprimer_tous_les_caracteres_speciaux_d-une_chaine
La fonction n'est pas la première présentée mais une variante trouvée plus bas (avec exactement les mêmes effets)
J'ai lu que les fonction de remplacement de caractères avaient un peu de mal avec utf-8 mais mon document et ma DB sont en ISO 8859-1 (latin-1).
Quelqu'un a une idée ?
Merci d'avance.
A voir également:
- REmplacement de caractères
- Remplacement coco - Accueil - Réseaux sociaux
- Coco.fr remplacement - Accueil - Réseaux sociaux
- Caractères ascii - Guide
- Caractères spéciaux - Guide
- Caractères spéciaux mac - Guide
1 réponse
Salut madmaskx,
Tu pourrais t'inspirer de la contribution de Daniel Loureiro à la page de manuel de la fonction Php str_replace :
https://www.php.net/manual/en/function.str-replace.php#111694
ou alors te passer de tout ce bazar, et utiliser iconv, pour faire de la translitération, ce qui va marcher même sur le caractères auxquels tu ne pense pas (si ton serveur Php est compilé avec le support de iconv) en convertissant de ta source ISO-8859-1 vers ascii.
https://www.php.net/manual/en/function.iconv.php
Cela ne va pas supprimer les accents, mais essayer de les transformer en quelque chose qui existe en ascii.
Par exemple : $value = "une phrase accentuée"; donnera "une phrase accentu'ee".
Dal
Tu pourrais t'inspirer de la contribution de Daniel Loureiro à la page de manuel de la fonction Php str_replace :
https://www.php.net/manual/en/function.str-replace.php#111694
ou alors te passer de tout ce bazar, et utiliser iconv, pour faire de la translitération, ce qui va marcher même sur le caractères auxquels tu ne pense pas (si ton serveur Php est compilé avec le support de iconv) en convertissant de ta source ISO-8859-1 vers ascii.
https://www.php.net/manual/en/function.iconv.php
Cela ne va pas supprimer les accents, mais essayer de les transformer en quelque chose qui existe en ascii.
Par exemple : $value = "une phrase accentuée"; donnera "une phrase accentu'ee".
<?php $value = "une phrase accentuée"; echo "<p>value (orig) = $value</p>"; $value = iconv("ISO-8859-1", "ascii//TRANSLIT", $value); echo "<p>value (trans) = $value</p>"; ?>
Dal