Php: remplacement d'entités par d'autres
callahan75
Messages postés
28
Date d'inscription
Statut
Membre
Dernière intervention
-
callahan75 Messages postés 28 Date d'inscription Statut Membre Dernière intervention -
callahan75 Messages postés 28 Date d'inscription Statut Membre Dernière intervention -
Bonsoir à tous,
j'aimerais remplacer dans des zones de textes d'un back-office le guillemets droit ( \&\#034) ouvrant et fermant (donc le même) les citations par des guillemets (ouvrant=\&\#8220; et fermant=\&\#8221;) ayant plus de style à mon goût une fois dans ma page.
Dans ma fonction ci-dessous traitant le texte (là en ex. un simple strophe en remplace un autre) , je peux remplacer n'importe quelle entité utilisée dans mon texte par une autre... mais comment faire simplement et sans équivoque la même chose pour remplacer mon guillemet ( \&\#034) entourant et étant le même forcément en début et fin de texte par cette fois-ci des guillemets n'étant pas identiques de chaque côté de ma chaine ?
Donc convertir (\&\#034 bla bla bla bla \&\#034) =>(\&\#8220; bla bla bla bla \&\#8221;) et quel que soit évidemment le texte contenu entre les guillemets.
______________________________________________________________________________________
function modifchars($contenu){
$traiter = array("", "\&\#039;","");
$remplace = array("","\&\#8217;","");
$contenu = str_replace($traiter,$remplace,$contenu);
return $contenu;
}
//traitement du texte avant ma requête sql
$texte= htmlspecialchars(($texte),ENT_QUOTES,"UTF-8");
$texte = modifchars($texte);
_______________________________________________________________________________________
Si quelqu'un a en tête quelque chose de simple et propre...c'est pas de refus
Par avance merci à tous.
Callahan75
j'aimerais remplacer dans des zones de textes d'un back-office le guillemets droit ( \&\#034) ouvrant et fermant (donc le même) les citations par des guillemets (ouvrant=\&\#8220; et fermant=\&\#8221;) ayant plus de style à mon goût une fois dans ma page.
Dans ma fonction ci-dessous traitant le texte (là en ex. un simple strophe en remplace un autre) , je peux remplacer n'importe quelle entité utilisée dans mon texte par une autre... mais comment faire simplement et sans équivoque la même chose pour remplacer mon guillemet ( \&\#034) entourant et étant le même forcément en début et fin de texte par cette fois-ci des guillemets n'étant pas identiques de chaque côté de ma chaine ?
Donc convertir (\&\#034 bla bla bla bla \&\#034) =>(\&\#8220; bla bla bla bla \&\#8221;) et quel que soit évidemment le texte contenu entre les guillemets.
______________________________________________________________________________________
function modifchars($contenu){
$traiter = array("", "\&\#039;","");
$remplace = array("","\&\#8217;","");
$contenu = str_replace($traiter,$remplace,$contenu);
return $contenu;
}
//traitement du texte avant ma requête sql
$texte= htmlspecialchars(($texte),ENT_QUOTES,"UTF-8");
$texte = modifchars($texte);
_______________________________________________________________________________________
Si quelqu'un a en tête quelque chose de simple et propre...c'est pas de refus
Par avance merci à tous.
Callahan75
A voir également:
- Php: remplacement d'entités par d'autres
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php - Forum Webmastering
- Alert php - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
3 réponses
Tu ne peux pas faire un Remplacer tous ?!
Sinon, moi j'aime bien mon code que j'ai réussie a déniché en travaillant en classe avec mon proffesseur. C'est un peut à la même manière que toi sauf qu'il marche un peut différement je croît.
Si celà peut t'aider, tu peut y ajouter les " " ou ' ' dans les tableaux a remplacer.
Sinon, moi j'aime bien mon code que j'ai réussie a déniché en travaillant en classe avec mon proffesseur. C'est un peut à la même manière que toi sauf qu'il marche un peut différement je croît.
Si celà peut t'aider, tu peut y ajouter les " " ou ' ' dans les tableaux a remplacer.
//Fonction qui remplace tous lse caractères spéciaux en les encodant function remplacer_caracteres_accentues_et_script_douteux($a_remplacer) { //Il trouve des caractères spéciaux $trouve = array("é", "à" ,"â" ,"ä" ,"ç" ,"è" ,"ê" ,"ë" ,"î" ,"ï" ,"ù" ,"ü" ,"û", "É", "À" ,"Â" ,"Ä" ,"Ç" ,"È" ,"Ê" ,"Ë" ,"Î" ,"Ï" ,"Ù" ,"Ü" ,"Û"); //Il remplace les cararctères trouvés $remplace = array("é" ,"à" ,"â" ,"ä" ,"ç" ,"è" ,"ê" ,"ë" ,"î" ,"ï" ,"ù" ,"ü" ,"û", "É" ,"À" ,"Â" ,"Ä" ,"Ç" ,"È" ,"Ê" ,"Ë" ,"Î" ,"Ï" ,"Ù" ,"Ü" ,"Û"); return str_replace($trouve, $remplace, $a_remplacer); }
En fait le noeud de ton problème c'est de différencier sans confusion possible le guillemet ouvrant et le guillemet fermant. Il faut pour cela trouver une condition qui soit toujours vérifiée dans un cas, et jamais dans l'autre.
Par exemple, si tous tes guillemets fermants sont précédés d'un point et suivis d'un espace (et jamais tes ouvrants), et/ou tous tes ouvrants sont suivis d'une majuscule et précédés d'un saut de ligne.
Tu peux soit utiliser des méthodes très simples (par exemple remplacer d'abord tous les guillemets du texte par un type ouvrant, puis tous les groupes "ouvrant+point" par "fermant+point"), ou passer par des expressions régulières qui permettent des recherches/remplacements complexes (voir doc de php)
Par exemple, si tous tes guillemets fermants sont précédés d'un point et suivis d'un espace (et jamais tes ouvrants), et/ou tous tes ouvrants sont suivis d'une majuscule et précédés d'un saut de ligne.
Tu peux soit utiliser des méthodes très simples (par exemple remplacer d'abord tous les guillemets du texte par un type ouvrant, puis tous les groupes "ouvrant+point" par "fermant+point"), ou passer par des expressions régulières qui permettent des recherches/remplacements complexes (voir doc de php)
Merci à vous deux pour vos réponses.
Je le voyais bien un peu comme ça... il va falloir que je passe par une expression régulière pour lui indiquer que lorsque qu'il y aura guillemet en début de chaine et en fin ( heureusement ça marche toujours par paire! ) il faudra convertir la chaine en distinguant le code de l'un et de l'autre mais surtout sans modifier le texte inséré entre !
Bonne journée
Je le voyais bien un peu comme ça... il va falloir que je passe par une expression régulière pour lui indiquer que lorsque qu'il y aura guillemet en début de chaine et en fin ( heureusement ça marche toujours par paire! ) il faudra convertir la chaine en distinguant le code de l'un et de l'autre mais surtout sans modifier le texte inséré entre !
Bonne journée