Problème de parsing php
jdsaith
Messages postés
8
Statut
Membre
-
jdsaith Messages postés 8 Statut Membre -
jdsaith Messages postés 8 Statut Membre -
Bonjour,
je suis en train de construire une petite application qui permet de gérer un site web depuis un forum phpBB2, et pour faire fonctionner le tout, je dois parser le BBcode en balises HTML...
tout se fait très bien, excepté pout les accents... il m'affiche des carrés à la place et je n'ai aucune idée de pourquoi!
voici la partie "parsing" de ma page:
pourtant, il devrait convertir les accents en
merci beaucoup d'avance pour votre aide!
je suis en train de construire une petite application qui permet de gérer un site web depuis un forum phpBB2, et pour faire fonctionner le tout, je dois parser le BBcode en balises HTML...
tout se fait très bien, excepté pout les accents... il m'affiche des carrés à la place et je n'ai aucune idée de pourquoi!
voici la partie "parsing" de ma page:
$texte = nl2br($texte); $searchstrings = array(":".$data_3['bbcode_uid'] , "[i]" , "[/i]" , "[b]" , "[/b]" , "[u]" , "[/u]","[size=7]","[size=9]","[size=12]","[size=18]","[size=24]","[/size]", "[url]", "[/url]","[/color]", "À" , "É", "È", "à" , "é", "è" , "Ç", "ç"); $replacestrings = array("" , "<i>" , "</i>" , "<b>" , "</b>" , "<u>" , "</u>","<font size=\"1\">","<font size=\"2\">","<font size=\"5\">","<font size=\"6\">","<font size=\"7\">" ,"</font>", "<a>", "</a>","</font>", "À", "É", "È", "à", "é", "è", "Ç", "ç"); $texte = str_replace($searchstrings, $replacestrings, $texte); //echo($texte); $search_url_color = array("[","]"); $replace_url_color = array("<",">"); while(strpos($texte , "[url=") !== false) { $converturl1 = strstr($texte , '[url='); //echo("couper en avant de \"[url=\" donne: ".$converturl1.'<br>'); $converturl1 = substr($converturl1, 0, strpos($converturl1, "]")+strlen("]")); //echo("couper après \"]\" donne: ".$converturl1.'<br>'); $converturl2 = str_replace(array("[url=","]"),array("<a href=\"","\">"),$converturl1); $texte = str_replace($converturl1,$converturl2,$texte); } while(strpos($texte , "[color=") !== false) { $convertcolor1 = strstr($texte , '[color='); //echo("couper en avant de \"[color=\" donne: ".$convertcolor1.'<br>'); $convertcolor1 = substr($convertcolor1, 0, strpos($convertcolor1, "]")+strlen("]")); //echo("couper après \"]\" donne: ".$convertcolor1); $convertcolor2 = str_replace(array("[color=","]"),array("<font color=\"","\">"),$convertcolor1.'<br>'); $texte = str_replace($convertcolor1,$convertcolor2,$texte); } echo($texte."<br><br>");
pourtant, il devrait convertir les accents en
éet compagnie... mais il ne le fait pas...
merci beaucoup d'avance pour votre aide!
A voir également:
- Problème de parsing php
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour à la ligne php ✓ - Forum PHP
- Retour a la ligne avec Echo comment faire ? - Forum Webmastering
- Alert php - Forum PHP
5 réponses
Bonjour
Il ne le fait pas parce que tu as saisi ton script en ANSI alors que ton $texte est en UTF8 (ou l'inverse).
Donc un 'é' dans $searchstrings n'est pas le même qu'un 'é' dans $texte.
As-tu une idée de l'encodage utilisé par ton éditeur de script, et de celui de $texte ?
Il ne le fait pas parce que tu as saisi ton script en ANSI alors que ton $texte est en UTF8 (ou l'inverse).
Donc un 'é' dans $searchstrings n'est pas le même qu'un 'é' dans $texte.
As-tu une idée de l'encodage utilisé par ton éditeur de script, et de celui de $texte ?
bonjour,
À part l'interclassement de ma table (latin_swedish_ci), je ne vois pas comment vérifier...
*trois minutes plus tard* vive PHPinfo!
la base SQLite est encodée en UTF-8, toujours ça de moins...
maintenant, la page html est donnée en UTF-8 dans les META, mais ça ne joue en rien sur l'Encodage avant qu'elle se rende, si je ne m'abuse...
et celle-là, je l'ai pas trouvée sur PHPinfo.
donc, rendu là, que faire??
À part l'interclassement de ma table (latin_swedish_ci), je ne vois pas comment vérifier...
*trois minutes plus tard* vive PHPinfo!
la base SQLite est encodée en UTF-8, toujours ça de moins...
maintenant, la page html est donnée en UTF-8 dans les META, mais ça ne joue en rien sur l'Encodage avant qu'elle se rende, si je ne m'abuse...
et celle-là, je l'ai pas trouvée sur PHPinfo.
donc, rendu là, que faire??
bon bon bon,
Je viens de discuter ave mon hébergeur, qui m'a confirmé que tout son serveur fonctionnait en UTF8, donc si il y a un problème, c'est que le UTF8 ne reconnaît pas les "é", ce dont je doute, vu que mon hébergeur français n'aurait pas choisi un language qui ne compte pas les accents...
c'est donc dans mon code en quelque part le problème, mais je ne le vois vraiment pas. peut être copier-coller un des carrés formés par mon code, qui sait?
Je viens de discuter ave mon hébergeur, qui m'a confirmé que tout son serveur fonctionnait en UTF8, donc si il y a un problème, c'est que le UTF8 ne reconnaît pas les "é", ce dont je doute, vu que mon hébergeur français n'aurait pas choisi un language qui ne compte pas les accents...
c'est donc dans mon code en quelque part le problème, mais je ne le vois vraiment pas. peut être copier-coller un des carrés formés par mon code, qui sait?
Le problème, c'est l'éditeur avec lequel tu travailles . Si lui n'est pas en UFT8, comme je l'expliquais dans le message 1, le 'é' qui apparaît dans $searchstrings n'est pas codé en UTF8. Quand tu le recherches avec une chaîne qui contient un 'é' en UTF8, il ne peut pas le trouver, ce ne sont pas les mêmes codes.
Vérifie l'encodage de ton éditeur de texte.
Remarque : l'UTF8 (l'unicode en fait) connaît les 'é' mais aussi l'arabe, le chinois et un tas d'autres caractères dont tu ne soupçonnes même pas l'existence. C'est l'un des encodages les plus riches actuellement, c'est pour ça que tout le monde s'y met.
Pour passer complètement à l'UTF8, il faudra que tu choisisses un interclassement utf8 (utf8_general_ci) pour tes tables mysql, et que tu ajoutes une requête SET NAMES UTF8 après la connexion à ta base.
Il y a aussi un paramètre à ajouter à la fonction htmlentities (si tu l'utilises) pour lui dire que tu travailles en utf8.
J'ai fait tout ça récemment (1 mois environ) et je n'ai pas (encore) eu de mauvaises surprises.
Vérifie l'encodage de ton éditeur de texte.
Remarque : l'UTF8 (l'unicode en fait) connaît les 'é' mais aussi l'arabe, le chinois et un tas d'autres caractères dont tu ne soupçonnes même pas l'existence. C'est l'un des encodages les plus riches actuellement, c'est pour ça que tout le monde s'y met.
Pour passer complètement à l'UTF8, il faudra que tu choisisses un interclassement utf8 (utf8_general_ci) pour tes tables mysql, et que tu ajoutes une requête SET NAMES UTF8 après la connexion à ta base.
Il y a aussi un paramètre à ajouter à la fonction htmlentities (si tu l'utilises) pour lui dire que tu travailles en utf8.
J'ai fait tout ça récemment (1 mois environ) et je n'ai pas (encore) eu de mauvaises surprises.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question