bonjour,
Je suis dans un cas un peu particulier : je depoussiere un site que j'avais commence sous windows. entretemps, je suis passe a 100% sous linux ( ce qui pose parfois qq probleme pour les test de compatibilite ) qui m'avait mis en UTF8 par defaut. je l'ai donc force a repasser en ISO, apres m'etre apercu que ca buggait au niveau des encodages des accents ( je travaille en php, avec des script qui font automatiquement la conversion caractere accentues -> code HTM correspondant ).
Cette fois, je bloque sur un autre probleme, qui pourrait etre lie a l'encodage, meme si je crois avoir reenregistré tout mes fichier en ISO :
je travaille sur une interface d'edition d'article, avec implementation d'un langage de mise en forme simplifié ( genre un CMS maison ). j'en suis a aborder le point délicat de la création des paragraphes à partir des retours a la ligne. j'ai donc construit une expression reguliere qui remplace les suites de \n par des </p><p>, sauf quand ce \n suit directement une balise </hn>. ( que voici pour ceux a qui ca parle : #(?<!</h[1-3]>)(\n+)# .
j'ai teste cette expression sur un site fait pour ca pour la mettre au point ( http://www.lumadis.be/regex/test_regex.php ), et dessus elle fonctionne parfaitement. quant je la teste chez moi, en revanche, c'est une autre histoire. voici les resultats obtenus :
le texte de test :
le reultat (correct) renvoye par le testeur :
et le resultat faux renvoyé par mon script :
vous noterez egalement que dans ce que me renvoie mon script, les retours a la ligne ont ete conservé, alors qu'il y a des </p><p> malgre tout. tout se passe comme si il y avait un autre caractere de retour a la ligne different de \n qui se placait juste avant le \n, il me semble que c'est la seule explication coherente. bien sur, j'ai pense au \r de windows, mais :
1. je suis sous linux
2. le meme probleme devrait apparaitre dans le testeur
3. j'ai essaye de faire au prealable un str_replace('\r','',$texte), ca ne change rien.
donc, ma question ( enfin ) c'est de savoir si ce probleme pourrais venir d'une histoire d'encodage ( si oui, de quoi ? ), si l'UTF8 avait une maniere specifique de coder les retours a la ligne, ou si j'avais fait une connerie. je sais que ce probleme a en apparence plus de rapport avec le PHP, mais ca concerne aussi l'encodage, alors si quelqu'un voit, je commence vraiment a m'arracher les cheveux.....
Merci d'avoir tout lu ( ouf ! ) !
Modifié par jobherzt (27 Nov 2005 - 14:56)
Je suis dans un cas un peu particulier : je depoussiere un site que j'avais commence sous windows. entretemps, je suis passe a 100% sous linux ( ce qui pose parfois qq probleme pour les test de compatibilite ) qui m'avait mis en UTF8 par defaut. je l'ai donc force a repasser en ISO, apres m'etre apercu que ca buggait au niveau des encodages des accents ( je travaille en php, avec des script qui font automatiquement la conversion caractere accentues -> code HTM correspondant ).
Cette fois, je bloque sur un autre probleme, qui pourrait etre lie a l'encodage, meme si je crois avoir reenregistré tout mes fichier en ISO :
je travaille sur une interface d'edition d'article, avec implementation d'un langage de mise en forme simplifié ( genre un CMS maison ). j'en suis a aborder le point délicat de la création des paragraphes à partir des retours a la ligne. j'ai donc construit une expression reguliere qui remplace les suites de \n par des </p><p>, sauf quand ce \n suit directement une balise </hn>. ( que voici pour ceux a qui ca parle : #(?<!</h[1-3]>)(\n+)# .
j'ai teste cette expression sur un site fait pour ca pour la mettre au point ( http://www.lumadis.be/regex/test_regex.php ), et dessus elle fonctionne parfaitement. quant je la teste chez moi, en revanche, c'est une autre histoire. voici les resultats obtenus :
le texte de test :
<h1>titre</h1>
salut tout le monde !
ca va ?
bien ?
le reultat (correct) renvoye par le testeur :
<h1>titre</h1>
salut tout le monde !</p><p>ca va ?</p><p>bien ?
et le resultat faux renvoyé par mon script :
<h1>titre</h1>
</p><p>salut tout le monde !
</p><p>ca va ?
</p><p>
</p><p>
</p><p>bien ?
vous noterez egalement que dans ce que me renvoie mon script, les retours a la ligne ont ete conservé, alors qu'il y a des </p><p> malgre tout. tout se passe comme si il y avait un autre caractere de retour a la ligne different de \n qui se placait juste avant le \n, il me semble que c'est la seule explication coherente. bien sur, j'ai pense au \r de windows, mais :
1. je suis sous linux
2. le meme probleme devrait apparaitre dans le testeur
3. j'ai essaye de faire au prealable un str_replace('\r','',$texte), ca ne change rien.
donc, ma question ( enfin ) c'est de savoir si ce probleme pourrais venir d'une histoire d'encodage ( si oui, de quoi ? ), si l'UTF8 avait une maniere specifique de coder les retours a la ligne, ou si j'avais fait une connerie. je sais que ce probleme a en apparence plus de rapport avec le PHP, mais ca concerne aussi l'encodage, alors si quelqu'un voit, je commence vraiment a m'arracher les cheveux.....
Merci d'avoir tout lu ( ouf ! ) !
Modifié par jobherzt (27 Nov 2005 - 14:56)