[PHP] Remplacer le caractère pourcentage
Résolu
rilazzi
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
khouss Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
khouss Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
Bonjour, je développe actuellement un formulaire pour un site web.
Lorsque le formulaire est validé je passe le contenu du texte dans une fonction qui m'enlève tous les accents et les remplace pour des caractères normaux, exmple : é = e.
J'aimerais aussi pouvoir remplacer le caractère "%" pourcentage par "0/0" car cela me pose quelques problèmes. Je sais que l'on peut utiliser la fonction str_replace mais j'ai l'impression que le caractère % a la même fonction qu'en SQL c'est à dire qu'il remplace tous les caractères...
Si quelqu'un peut m'éclairer un petit peu là dessus ça m'aiderai vraiment. Merci d'avance!
Lorsque le formulaire est validé je passe le contenu du texte dans une fonction qui m'enlève tous les accents et les remplace pour des caractères normaux, exmple : é = e.
J'aimerais aussi pouvoir remplacer le caractère "%" pourcentage par "0/0" car cela me pose quelques problèmes. Je sais que l'on peut utiliser la fonction str_replace mais j'ai l'impression que le caractère % a la même fonction qu'en SQL c'est à dire qu'il remplace tous les caractères...
Si quelqu'un peut m'éclairer un petit peu là dessus ça m'aiderai vraiment. Merci d'avance!
A voir également:
- [PHP] Remplacer le caractère pourcentage
- Caractère ascii - Guide
- Caractère spéciaux - Guide
- Caractere speciaux - Guide
- Remplacer disque dur par ssd - Guide
- Caractere vide - Guide
6 réponses
Cette une fonction que j'ai prise sur internet mais elle marche très bien pour les accents et certains caractères spéciaux :
<?php function wd_remove_accents($str, $charset='utf-8') { $str = htmlentities($str, ENT_NOQUOTES, $charset); $str = preg_replace('#&([A-za-z])(?:acute|cedil|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $str); $str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str); // pour les ligatures e.g. 'oe' $str = preg_replace('#&[^;]+;#', '', $str); // supprime les autres caractères return $str; } ?>
D'abord merci de ton aide. Mais j'ai essayé cette nouvelle fonction et je n'ai pas encore réussi à modifier le signe %. Je pense qu'il ça n'a pas fonctionner car lorsque je transfert les informations en mode GET j'ai toujours mon problème, il y a le pourcentage qui casse toutes les informations. Car un espace est représenté par "%20".
Ne me demande pas pourquoi je fais un $_GET, je suis obligé car lorsque je valide mon formulaire je récupère les données en mode $_POST sur un autre fichier php et ensuite je dois les envoyer dans un format spécial vers un autre fichier php qui est sur un autre serveur.
Si tu as une idée pour m'aider je prends avec plaisir. Et encore merci !
Ne me demande pas pourquoi je fais un $_GET, je suis obligé car lorsque je valide mon formulaire je récupère les données en mode $_POST sur un autre fichier php et ensuite je dois les envoyer dans un format spécial vers un autre fichier php qui est sur un autre serveur.
Si tu as une idée pour m'aider je prends avec plaisir. Et encore merci !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Résolu !
Finalement la fonction était :
function wd_remove_accents($str, $charset='utf-8') {
$str = htmlentities($str, ENT_NOQUOTES, $charset);
$str = preg_replace('#&([A-za-z])(?:acute|cedil|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $str);
$str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str); // pour les ligatures e.g. 'œ'
$str = preg_replace('#%#', '0/0', $str); // Remplace le % codé en HTML par %
$str = preg_replace('#&[^;]+;#', '', $str); // supprime les autres caractères
return $str;
}
Donc ce qui veut dire que le pourcentage n'était pas interprété en HTML.
Merci quand même et j'espère que cela pourra en aider un ou deux.
Finalement la fonction était :
function wd_remove_accents($str, $charset='utf-8') {
$str = htmlentities($str, ENT_NOQUOTES, $charset);
$str = preg_replace('#&([A-za-z])(?:acute|cedil|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $str);
$str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str); // pour les ligatures e.g. 'œ'
$str = preg_replace('#%#', '0/0', $str); // Remplace le % codé en HTML par %
$str = preg_replace('#&[^;]+;#', '', $str); // supprime les autres caractères
return $str;
}
Donc ce qui veut dire que le pourcentage n'était pas interprété en HTML.
Merci quand même et j'espère que cela pourra en aider un ou deux.
Donc il faut faire un str_replace sur ce code HTML si bien sûr il n'y a que le signe % à remplacer dans la chaîne et non pas d'autres signes spéciaux car alors il serait mieux d'utiliser un preg_replace :