Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2716 connectés 

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  340  341  342  ..  486  487  488  489  490  491
Auteur Sujet :

les développeurs de forums, les 3/4 des forums sont down /o\

n°1337137
0x90
Posté le 01-04-2006 à 20:59:48  profilanswer
 

Reprise du message précédent :
Bha c'est des outils assez puissant, mais à l'utilisation c'est simple et à la sortie ca te génère un fichier C à compiler, donc assez léger je pense aussi.
 
Jviens de faire un test juste avec flex :
 

Code :
  1. /* BBcode parser */
  2. %{
  3. void imgprt(char*, char*);
  4. char* user2img(char*);
  5. %}
  6.  
  7. %%
  8. \[:[[:alnum:] _-]+:\] imgprt(user2img(yytext), "user smiley" );
  9. :pt1cable:            imgprt("pt1cab.gif", ":pt1cable:" );
  10. :p                    imgprt("p.gif", ":p" );
  11. \n                    puts("<br />" );
  12. %%
  13.  
  14. /* transforme [:machin:] en machin.gif */
  15. char* user2img(char* user)
  16. {
  17.   char *tmp, *img;
  18.   sscanf(user, "[:%a[a-zA-Z0-9 _-]:]", &tmp);
  19.   asprintf(&img, "%s.gif", tmp);
  20.   free(tmp);
  21.   return img;
  22. }
  23.  
  24. /* affiche un smiley */
  25. void imgprt(char* image, char* code)
  26. {
  27.   printf("<img src=\"%s\" alt=\"%s\" />", image, code);
  28. }
  29.  
  30. /* le main */
  31. int main(void)
  32. {
  33.   yylex();
  34. }


(pour ceux qui veulent tester la commande de compil est "flex bbparse.yy &&  gcc lex.yy.c  -lfl -o bbparse" , avec bbparse.yy le fichier que je viens de citer)
 
Bon les 2 fonctions imgprt et user2img faut pas regarder, c'est tout laid comme code et ca leak a mort.
La partie intéressante, et la seule à bidouiller pour gérer les codes, c'est celle entre les %%, la suite des règles de replacement ( a chaque correspondance, le code C sur la même ligne est exécuté et pour le texte sans correspondance, il sort sur la sortie standard ), assez simple a employer il me semble, et avec ces règles totalement triviales ( sans bidouilles genre retour arrière et tout ca comme les regexp pour le :/ ) j'ai jamais de conflit entre :p et :pt1cable: c'est le bonheur :D


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
mood
Publicité
Posté le 01-04-2006 à 20:59:48  profilanswer
 

n°1337139
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 01-04-2006 à 21:03:14  profilanswer
 

mais un :/ il va pas être remplacé dans un http:// ?
 
(tient d'ailleurs y a des \ qui sont bouffés par geshi :/)

n°1337142
0x90
Posté le 01-04-2006 à 21:10:15  profilanswer
 

joce a écrit :

mais un :/ il va pas être remplacé dans un http:// ?
 
(tient d'ailleurs y a des \ qui sont bouffés par geshi :/)


 
Non parceque le principe du parseur lexical c'est de découper la chaine de texte en élements atomiques (et il le fait en une seule passe d'ailleurs, donc cool pour les perfs), si http://kkchose.com est un élément de type "url" alors c'en est un et c'est tout il passe à la suite du texte directement, sachant qu'il prends en priorité les éléments les plus long ca évite aussi les pb avec les elements à préfixe commun ( :p et  :pt1cable:)


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1337144
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 01-04-2006 à 21:13:09  profilanswer
 

et les nested tags il les gère comment ?
 
genre
 
[quote1]a[quote1]b[quote1]c[/quote1][/quote1][/quote1]

Message cité 1 fois
Message édité par joce le 01-04-2006 à 21:13:27
n°1337145
0x90
Posté le 01-04-2006 à 21:18:23  profilanswer
 

la gestion des nested et tout ca, ca serait plutot le role de bison après il me semble, mais je connais pas super bien, faudra que je regarde ca demain, la jdois bosser un peu ...


Message édité par 0x90 le 01-04-2006 à 21:18:38

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1337223
belgique
Posté le 02-04-2006 à 02:27:08  profilanswer
 

joce a écrit :

et les nested tags il les gère comment ?

 

genre

 

[quote1]a[quote1]b[quote1]c[/quote1][/quote1][/quote1]

 


En effet c'est bison qui doit s'occuper de ça.
Quoi qu'il en soit, avec un outil comme flex, le résultat pour le parsing des smilies sera de toute façon bien plus rapide.
Flex c'est l'analyseur lexical, tu luis files tes regex pour déterminer que :) c'est un smiley_type_1 et [quote] un debut_quote
après tu utilises ces symbôles pour définir ta grammaire avec bison....

 

genre :

 

quote -> debut_quote bloc fin_quote ... et ainsi de suite. Tu peux faire des trucs super puissants et à priori plus rapides et faciles à gérer que les regexp qui doivent être bien dûres à gérer.

n°1337232
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 02-04-2006 à 03:24:57  profilanswer
 

disons que les trucs les plus chiant à gérer c'est les trucs du type :
 
<span ...> test <span ...> test1 </span> </span>
 
faut pas qu'il pense que le premier </span> rencontré et celui qui ferme le premier <span ...>

n°1337243
pascal_
Posté le 02-04-2006 à 09:31:35  profilanswer
 

joce a écrit :

les preg sont plutôt efficace quand même


 
Face à flex (qui n'est pas une usine à gaz forcément), ils doivent faire vraiment sales figures (pas besoin de yacc/bison pour des expressions régulières au passage).

Message cité 1 fois
Message édité par pascal_ le 02-04-2006 à 09:36:50
n°1337245
pascal_
Posté le 02-04-2006 à 09:35:51  profilanswer
 

joce a écrit :

disons que les trucs les plus chiant à gérer c'est les trucs du type :
 
<span ...> test <span ...> test1 </span> </span>
 
faut pas qu'il pense que le premier </span> rencontré et celui qui ferme le premier <span ...>


 
C'est à toi de gérer ça, c'est de la grammaire, pas de la reconnaissance lexicale.  
 
A la limite, tu peux le gérer avec des "START CONDITIONS" (voir manuel, http://www.hmug.org/man/1/flex.php par exemple).
 

n°1337247
0x90
Posté le 02-04-2006 à 09:44:21  profilanswer
 

joce a écrit :

disons que les trucs les plus chiant à gérer c'est les trucs du type :
 
<span ...> test <span ...> test1 </span> </span>
 
faut pas qu'il pense que le premier </span> rencontré et celui qui ferme le premier <span ...>


 
Ca tu t'en fous, c'est ton navigateur qui s'en occupe, si ton machin en flex remplace [ quote] par <span class="quote"> et [ /quote] par </span>
ca marchera tout seul.
 
Au pire ce qu'il faut c'est pour gérer les problèmes de nestage incorrect (au sens xml/ xhtml) et à ce moment la il suffit d'avoir 2 piles, une principale(1), et une temporaire(2)
- a chaque ouverture d'une balise, tu ajoute cette balise à la pile 1 ( [quote], [b], etc ... ) et tu affiche le code html correspondant.
- a chaque fermeture d'une balise, si celle-ci est est au sommet de la pile 1 tu l'enlève et tu affiche le code html. Si elle est pas au sommet, tu dépile jusqu'a le trouver, en empilant chaque élément dans la pile 2 et affichant le code de fermeture. Tu dépile ensuite l'élément que tu cherchais en affichant le code de fermeture, et ensuite tu vide ta pile 2 tout en rempilant les éléments dans la pile 1 en affichant le code d'ouverture. Si tu trouve pas du tout ton élément dans la pile 1, c'est qu'il y a un code de fermeture en trop donc tu l'ignore et l'affiche tel quel ou engueule l'utilisateur.
 
Avec un tel système tu dois pouvoir te passer de bison. (a mon avis avec bison ce serait chiant de gérer les trucs mal nestés de toute facon).

Message cité 2 fois
Message édité par 0x90 le 02-04-2006 à 09:44:42

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
mood
Publicité
Posté le 02-04-2006 à 09:44:21  profilanswer
 

n°1337249
pascal_
Posté le 02-04-2006 à 09:57:58  profilanswer
 

0x90 a écrit :

Ca tu t'en fous, c'est ton navigateur qui s'en occupe


 
Surtout pas, sinon tu introduis des bug qui peuvent "casser" la présentation de toute la page (c'est déjà arrivé en plus :o)

n°1337250
0x90
Posté le 02-04-2006 à 10:00:26  profilanswer
 

pascal_ a écrit :

Surtout pas, sinon tu introduis des bug qui peuvent "casser" la présentation de toute la page (c'est déjà arrivé en plus :o)


 
J'ai du mal comprendre, mais les <span> c'est du coté "final" html, si t'as <span>machin<span>bidule</span>truc</span>, c'est lui qui s'occupe de faire la correspondance, pas toi.
 
Pour les balises BBcode mal nestés, qui effectivement peuvent poser pb, j'ai filé l'algo avec les 2 piles qui me semble correct.


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1337266
masklinn
í dag viðrar vel til loftárása
Posté le 02-04-2006 à 12:01:45  profilanswer
 

pascal_ a écrit :

Face à flex (qui n'est pas une usine à gaz forcément), ils doivent faire vraiment sales figures (pas besoin de yacc/bison pour des expressions régulières au passage).


Faut quand même préciser que bison (ou yacc) ne sont pas les seuls parseurs dispos (bon après en PHP je sais pas ce qu'on peut trouver, mais je sais qu'en python il y en a d'autres souvent plus simples à utiliser. bison est quand même orienté grammaires complexes type langages de proc).
 
Mais bon c'est quand même un peu de l'overkill, sortir un truc pareil pour du bbcode [:pingouino]

joce a écrit :

disons que les trucs les plus chiant à gérer c'est les trucs du type :
 
<span ...> test <span ...> test1 </span> </span>
 
faut pas qu'il pense que le premier </span> rencontré et celui qui ferme le premier <span ...>


Avec un parseur/analyseur lexical c'est trivial à parser ça [:spamafote]

Message cité 2 fois
Message édité par masklinn le 02-04-2006 à 12:05:03

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1337300
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 02-04-2006 à 14:00:11  profilanswer
 

0x90 a écrit :

Ca tu t'en fous, c'est ton navigateur qui s'en occupe, si ton machin en flex remplace [ quote] par <span class="quote"> et [ /quote] par </span>
ca marchera tout seul.


non, mon problème c'est que le WYSIWYG génère :
 
<span style="bold"> </span> pour le gras et <span style="italic"> </span> pour l'italic (c'est un exemple)
et moi je dois reparser ca en code BB
 
donc <span style="bold"> pouet <span style="italic"> plop </span> hop </span>
 
doit être converti en
 
pouet plop hop
 
le problème c'est que le forum converti ca en :
 
pouet plop hop

n°1337301
belgique
Posté le 02-04-2006 à 14:00:33  profilanswer
 

masklinn a écrit :

Faut quand même préciser que bison (ou yacc) ne sont pas les seuls parseurs dispos (bon après en PHP je sais pas ce qu'on peut trouver, mais je sais qu'en python il y en a d'autres souvent plus simples à utiliser. bison est quand même orienté grammaires complexes type langages de proc).

 

Mais bon c'est quand même un peu de l'overkill, sortir un truc pareil pour du bbcode  [:pingouino]

 

Avec un parseur/analyseur lexical c'est trivial à parser ça  [:spamafote]

 


Clair c'est nettement plus simple

 

ox90, il faut utiliser un parseur, pas qu'un analyseur lexical :o

n°1337302
belgique
Posté le 02-04-2006 à 14:01:36  profilanswer
 

joce a écrit :

non, mon problème c'est que le WYSIWYG génère :

 

<span style="bold"> </span> pour le gras et <span style="italic"> </span> pour l'italic (c'est un exemple)
et moi je dois reparser ca en code BB

 

donc <span style="bold"> pouet <span style="italic"> plop </span> hop </span>

 

doit être converti en

 

pouet plop hop

 

le problème c'est que le forum converti ca en :

 

pouet plop hop


Avec un parseur, ça doit être très simple :)

n°1337305
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 02-04-2006 à 14:05:20  profilanswer
 

masklinn a écrit :

Faut quand même préciser que bison (ou yacc) ne sont pas les seuls parseurs dispos (bon après en PHP je sais pas ce qu'on peut trouver, mais je sais qu'en python il y en a d'autres souvent plus simples à utiliser. bison est quand même orienté grammaires complexes type langages de proc).
 
Mais bon c'est quand même un peu de l'overkill, sortir un truc pareil pour du bbcode [:pingouino]
 
Avec un parseur/analyseur lexical c'est trivial à parser ça [:spamafote]


oui mais à coup de preg_ ca devient tout de suite bcp plus chiant :o

n°1337306
belgique
Posté le 02-04-2006 à 14:12:37  profilanswer
 

D'où le fait qu'on te conseille de passer à autre chose :D

n°1337314
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 02-04-2006 à 14:27:47  profilanswer
 

belgique a écrit :

D'où le fait qu'on te conseille de passer à autre chose :D


oué mais passer par un module externe en C, voila quoi, ca fait bizarre, d'autant qu'il faut réinjecter le résultat après parsing dans l'appli php, ca doit être coton :D

n°1337315
masklinn
í dag viðrar vel til loftárása
Posté le 02-04-2006 à 14:29:15  profilanswer
 

joce a écrit :

oui mais à coup de preg_ ca devient tout de suite bcp plus chiant :o


C'est pour ça que les gens te disent de passer à un parseur :o
 
J'ai pas dit que les parseurs/analiseurs c'était de l'overkill, j'ai dit que Bison/Yacc c'était de l'overkill pour parser du bbcode, mais un parseur solide et de qualitaÿ (chais pas si ça existe en PHP note, en Python ya des trucs genre SimpleParse qui roxxorz grave par contre) avec une bonne récupération des erreurs et le genre de problèmes que tu as avec preg/ereg n'existe même plus.
 
(ton problème devient de formaliser la grammaire et les cas d'erreur en fait [:kalimeroo] )

joce a écrit :

oué mais passer par un module externe en C, voila quoi, ca fait bizarre, d'autant qu'il faut réinjecter le résultat après parsing dans l'appli php, ca doit être coton :D


Nan mais faut que tu trouves un parseur de qualitay pour PHP stou, avec un peu de bol ça existe... peut-être...

Message cité 1 fois
Message édité par masklinn le 02-04-2006 à 14:30:07

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1337316
belgique
Posté le 02-04-2006 à 14:39:16  profilanswer
 

http://piif.lautre.net/DEV/placid/readme.html mais je sais pas ce que ça vaut :D

n°1337331
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 02-04-2006 à 15:33:44  profilanswer
 

masklinn a écrit :

C'est pour ça que les gens te disent de passer à un parseur :o
 
J'ai pas dit que les parseurs/analiseurs c'était de l'overkill, j'ai dit que Bison/Yacc c'était de l'overkill pour parser du bbcode, mais un parseur solide et de qualitaÿ (chais pas si ça existe en PHP note, en Python ya des trucs genre SimpleParse qui roxxorz grave par contre) avec une bonne récupération des erreurs et le genre de problèmes que tu as avec preg/ereg n'existe même plus.
 
(ton problème devient de formaliser la grammaire et les cas d'erreur en fait [:kalimeroo] )
 
Nan mais faut que tu trouves un parseur de qualitay pour PHP stou, avec un peu de bol ça existe... peut-être...


non mais si c'est fait avec php directement ca sera une usine à gaz c'est même pas la peine d'y penser, je préfère me faire chier avec des preg_

n°1337332
0x90
Posté le 02-04-2006 à 15:36:26  profilanswer
 

Aerf, j'avais pas pensé au WYSIWYG .... Effectivement dans ce cas il faut un analyseux syntaxique en plus du lexical, et effectivement doit y avoir autre chose que flex/bison, mais j'ai testé le 1er truc que j'avais sous la main et que je connaissais.
Cela dit, niveau intégration ca doit pas être si dur, c'est une fonction  
qui prends en argument un string et qui te ressort un autre string, et sinon pour un premier essai on peut aussi faire un cgi.
 
( je connais mal bison, c'est si gros/lourd que ca comme analyseur syntaxique ? )


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1337373
belgique
Posté le 02-04-2006 à 16:59:50  profilanswer
 

Non, ça ne doit pas l'être :p. Disons que ça doit être trop puissant pour ce qu'il cherche à faire peut être. Mais je dois avouer que je ne connais pas les alternatives.

n°1337629
omega2
Posté le 03-04-2006 à 11:18:07  profilanswer
 

Pour les BBCode, j'utilises une astuce à la con.
Je fais un premier passage en modifiant les codes clés en rajoutant des caractéres intermédiaires et ensuite, je passe un second coup pour mettre la forme définitive.
J'ai fait comme ça pour pouvoir remettre les codes dans le "alt" de la balise image sans que ca soit retransformé par les codes suivants.

n°1337683
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 03-04-2006 à 12:22:28  profilanswer
 

omega2 a écrit :

Pour les BBCode, j'utilises une astuce à la con.
Je fais un premier passage en modifiant les codes clés en rajoutant des caractéres intermédiaires et ensuite, je passe un second coup pour mettre la forme définitive.
J'ai fait comme ça pour pouvoir remettre les codes dans le "alt" de la balise image sans que ca soit retransformé par les codes suivants.


je vois qu'on fait la même chose pour les alt [:ddr555]

n°1337688
xman
branleur
Posté le 03-04-2006 à 12:31:03  profilanswer
 

Et si dans un message on tape les fameux caractères intermédiaires que tu rajoutes, ça risque pas de poser problème ?
 
Sinon, j'ai résolu mon problème de codes de smileys qui en contiennent d'autres. Je vous livre ma solution...
 
Comme tout le monde (je pense), j'ai une fonction bbcode($message) qui retourne le message qui contenait du bbcode après l'avoir transformé en html. Au début de cette fonction, avant tout autre remplacement, je commence par faire un appel à la fonction suivante :
 

Code :
  1. function replace_smileys($message)
  2. {
  3. global $smileys;
  4. foreach ($smileys as $indice => $smiley)
  5. {
  6.  $escapedSmileyCode = htmlspecialchars($smiley[0]);
  7.  if ($smiley[0]==':/')
  8.  {
  9.   $pattern = array('`(?<!( alt="|itle="|tle="\[|alt="\[))'.$smiley[2].'([^/]|$)`is');
  10.   $replace = array('<img src="smileys/'.$smiley[1].'" title="'.$escapedSmileyCode.'" alt="'.$escapedSmileyCode.'" />$2');
  11.  }
  12.  else
  13.  {
  14.   $pattern = array('`(?<!( alt="|itle="|tle="\[|alt="\[))'.$smiley[2].'`is');
  15.   $replace = array('<img src="smileys/'.$smiley[1].'" title="'.$escapedSmileyCode.'" alt="'.$escapedSmileyCode.'" />');
  16.  }
  17.  $message = preg_replace($pattern,$replace,$message);
  18. }
  19. return $message;
  20. }


 
Etant donné que les messages sont passés par un htmlspecialchars lorsqu'ils ont été postés, on est certain que les codes html rajoutés (et notamment les guillemets) n'étaient pas dans le message d'origine et donc les smileys dans des alt="..." et title="..." ignorés ici sont forcément des smileys qui viennent d'être rajoutés dans du code html donc ils ne seront pas retransformés.
 
$smileys est un array qui contient tous les smileys qui ont été extraits de ma base de données et chaque smiley est représenté par un array (l'ensemble fait donc un array à 2 dimensions) qui contient le code du smiley, le nom du fichier image du smiley et le code du smiley transformé de façon à ne poser aucun problème ni dans du code html ni dans un regex (cette dernière valeur est stockée uniquement pour ne pas avoir à refaire la conversion à chaque message...).
 
Et voici donc le gros morceau qui résoud mon problème et qui est exécuté à l'ouverture de la page de lecture d'un topic et qui ordonne les smileys au fur et à mesure qu'ils sont ajoutés dans l'array décrit ci-dessus de façon à ce que les smileys qui en contiennent d'autres (genre :pt1cable: qui contient :p) soient traités en premiers.
 

Code :
  1. function lePremierContientLeSecond($premier,$second)
  2. {
  3. return eregi(quotemeta($second), $premier);
  4. }
  5. // -- Stockage des smileys dans un tableau --
  6. $smileys = array();
  7. $nbSmileys = 0;
  8. while ($smiley = mysql_fetch_array($reqsmileys))
  9. {
  10. // On échappe tous les caractères du code de smiley qui risquent de foutre la merde dans l'expression régulière
  11. $escapedSmiley = quotemeta(htmlspecialchars($smiley['code']));
  12. $position1 = $position2 = -1;
  13. if ($nbSmileys)
  14. foreach ($smileys as $indice => $smileyDejaInsere)
  15. {
  16.  // si le smiley à rajouter est inclus dans un smiley déjà inséré
  17.  if ( lePremierContientLeSecond($smileyDejaInsere[0],$smiley['code']) )
  18.   $position1 = $indice;
  19.  else
  20.  {
  21.   // si un smiley déjà inséré est inclus dans le smiley à rajouter
  22.   if ( lePremierContientLeSecond($smiley['code'],$smileyDejaInsere[0]) )
  23.   {
  24.    $position2 = $indice;
  25.    break;
  26.   }
  27.  }
  28. }
  29. // On insère le smiley dans la liste à la position déterminée
  30. if (($position1<0) && ($position2<0)) // Le code du smiley n'est inclus dans aucun autre et inversement
  31.  array_push($smileys, array($smiley['code'],$smiley['image'],$escapedSmiley));
  32. else // Il faut insérer le smiley à rajouter APRES position1 mais AVANT position2
  33. {
  34.  if ($position1>=0)
  35.   $position = $position1+1;
  36.  else
  37.   $position = $position2;
  38.  $smileys = array_merge
  39.  (
  40.   array_slice($smileys, 0, $position), // 1ère partie de l'array (avant ce qu'on insère)
  41.   array( array($smiley['code'],$smiley['image'],$escapedSmiley) ), // smiley inséré
  42.   array_slice($smileys, $position)  // 2nde partie de l'array (après ce qu'on insère)
  43.  );
  44. }
  45. $nbSmileys++;
  46. }


 
Bref, ça marche dans tous les cas auxquels j'ai pensé et que j'ai testés. :)
ça gère également le cas du :/ qui ne doit pas être transformé si c'est inclus dans un lien genre http:// et à moins que l'admin prenne un malin plaisir à prendre des codes de smileys mal délimités et qu'on peut confondre avec des séquences qu'on retrouve dans des liens ou des bbcodes ça doit marcher.

Message cité 1 fois
Message édité par xman le 03-04-2006 à 13:23:34
n°1337709
xman
branleur
Posté le 03-04-2006 à 13:05:29  profilanswer
 

Maintenant, un truc qui me casse prodigieusement la tête, c'est la coupure des "mots" trop longs.
 
Genre les p'tits malins qui tapent xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx pour avoir des lignes qui dépassent une taille raisonnable en largeur.
 
Le plus chiant étant de ne pas couper en plein milieu d'un code html ou d'un bbcode et de compter correctement les caractères si l'on veut gérer des caractères chinois, japonais ou autre qui bouffe plusieurs caractères car ils sont sous la forme &#nnnnn; (et d'ailleurs veiller à ne pas couper en plein milieu de ces codes.
 
C'est tellement prise de tête que j'ai presque envie de me dire "Oh puis après tout, est-ce vraiment gênant ces lignes trop larges ? :o" [:tinostar]

n°1337720
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 03-04-2006 à 13:41:22  profilanswer
 

pour les caractères jap/chinois etc, suffirait de tout passer en UTF-8/UTF-16 non ? :D

n°1337729
antp
Super Administrateur
Champion des excuses bidons
Posté le 03-04-2006 à 13:53:00  profilanswer
 

UTF8 ça n'aide pas si PHP ne le gère pas proprement, vu qu'un caractère peut occuper plusieurs octets.
en UTF16 ça marchera, mais est-ce que c'est supporté par PHP ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1337755
omega2
Posté le 03-04-2006 à 14:22:31  profilanswer
 

xman a écrit :

Et si dans un message on tape les fameux caractères intermédiaires que tu rajoutes, ça risque pas de poser problème ?

Aprés un passage du message en htmlentities, il y a un certain nombres de caractéres qui ne sont plus présent dans le message. :D J'ai simplement pris l'un deux et je suis tranquille. :)

n°1337793
belgique
Posté le 03-04-2006 à 14:58:24  profilanswer
 

antp a écrit :

UTF8 ça n'aide pas si PHP ne le gère pas proprement, vu qu'un caractère peut occuper plusieurs octets.
en UTF16 ça marchera, mais est-ce que c'est supporté par PHP ?

 


C'est la même problème, faut que php comprenne l'UTF. La seule différence c'est qu'en UTF16, tu le vois plus vite si ça marche pas :D

n°1337878
0x90
Posté le 03-04-2006 à 15:58:54  profilanswer
 

en peucheupeu y'a des fct d'iconv pour la longueur et le coupage de caractère qui prennent en compte le charset, ca devrait aider il me semble.


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1338086
xman
branleur
Posté le 03-04-2006 à 18:54:28  profilanswer
 

En fait, je pense que je vais juste me reprogrammer une fonction wordwrap maison et ça devrait le faire.

n°1338328
antp
Super Administrateur
Champion des excuses bidons
Posté le 04-04-2006 à 00:22:51  profilanswer
 

belgique a écrit :

C'est la même problème, faut que php comprenne l'UTF. La seule différence c'est qu'en UTF16, tu le vois plus vite si ça marche pas :D


Bah il suffit de couper après un octet d'indice impair :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1338343
xman
branleur
Posté le 04-04-2006 à 01:42:11  profilanswer
 

J'ai réussi à me débrouiller pour découper les mots trop longs sans toucher à tout ce qui ne doit pas l'être (tags html et codes représentant des caractères spéciaux).
Finalement, des fois, il vaut mieux passer 20 minutes à programmer un truc soi-même plutôt que de passer des heures à chercher comment adapter des fonctions existentes. :D
 
Il me reste juste un dernier truc à régler : je pensais que les seuls caractères sécables étaient les " ", "\n", "\r" "\t" et "-" mais je viens de constater que les caractères asiatiques (entre autres) - mais pas les caractères arabes - codés par &#nnnnn; sont considérés comme sécables (le navigateur retourne à la ligne quand il arrive sur le bord droit du conteneur) alors que d'autres caractères comme &#034; qui représente des guillemets n'est pas sécable. Et je suis prêt à parier qu'il y a plein d'autres caractères que je soupçonne même pas qui sont sécables.
 
Comment savoir quels sont les codes qui représentent un caractère sécable et lesquels sont insécables ? :??:
Y a-t-il une liste ou une fonction qui renvoie un booléen ? :??:


Message édité par xman le 04-04-2006 à 01:46:13
n°1338446
fabien
Vive la super 5 !
Posté le 04-04-2006 à 10:24:16  profilanswer
 

0x90 a écrit :

en peucheupeu

pé hache pé [:aloy]
 


---------------
Découvre le HFRcoin ✈ - smilies
n°1338774
soulmanto
Chat Noir replica
Posté le 04-04-2006 à 14:54:28  profilanswer
 

Je suis peu intervenu dans ce topic, mais si The Real Smiley peut ajouter mon forum : http://forum.tt-hardware.com :jap:

Message cité 1 fois
Message édité par soulmanto le 04-04-2006 à 14:57:16
n°1338810
THE REAL S​MILEY
The Real Résistance!
Posté le 04-04-2006 à 15:14:27  profilanswer
 

soulmanto a écrit :

Je suis peu intervenu dans ce topic, mais si The Real Smiley peut ajouter mon forum : http://forum.tt-hardware.com :jap:


 
Added :jap:


---------------
༼ つ ◕_◕ ༽つ
n°1338813
soulmanto
Chat Noir replica
Posté le 04-04-2006 à 15:15:35  profilanswer
 

Merci bien! :) :jap:

n°1338817
fabien
Vive la super 5 !
Posté le 04-04-2006 à 15:17:25  profilanswer
 

ce topic ca devient l'elite des créateurs de forums  [:smapafote]  
 


---------------
Découvre le HFRcoin ✈ - smilies
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  340  341  342  ..  486  487  488  489  490  491

Aller à :
Ajouter une réponse
 

Sujets relatifs
question avec les forums phpbb2[php] trouver la premier place ou inserer un enregistrement (résolu)
Forums phpBBQui connait l'algo du Passticket et sa mise en place en VB ?
[Merise] Mise en place d'un MCDFocus mal placé....
[Blabla/Prog] Les développeurs foromeurs sont-ils des feignasses?Mise en place d'un formulaire CGI
forums création de site internetJava - Mise en place d'une api (Servlet)
Plus de sujets relatifs à : les développeurs de forums, les 3/4 des forums sont down /o\


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)