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

 


Dernière réponse
Sujet : [PHP] Problème de Parsing :(((
siewn déjà tu passes tous les ereg en preg.
 
sinon, ex. d'optimisation :

Code :
  1. $textepost = preg_replace(":((cry)|(hello)|(lol)|(love)):","<img src=\"images/smilies/$1.gif\">", $textepost);
  2. $textepost = preg_replace("[img](\w+)[/img]","<img src=$1>",$textepost);


(faut p'tet faire qques changements pour que ça marche mais c'est pour l'idée générale)
 
en gros faut parcourir le moins de fois possible le texte donc avoir moins de preg_replace mais plus compliqués


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
siewn déjà tu passes tous les ereg en preg.
 
sinon, ex. d'optimisation :

Code :
  1. $textepost = preg_replace(":((cry)|(hello)|(lol)|(love)):","<img src=\"images/smilies/$1.gif\">", $textepost);
  2. $textepost = preg_replace("[img](\w+)[/img]","<img src=$1>",$textepost);


(faut p'tet faire qques changements pour que ça marche mais c'est pour l'idée générale)
 
en gros faut parcourir le moins de fois possible le texte donc avoir moins de preg_replace mais plus compliqués

Je@nb oui le code est de toi je crois
ethernal

skylight a écrit a écrit :

je fais ca moi :
 

Code :
  1. //
  2. // Interrogation de la base de données pour extraire les smileys a transformer
  3. //
  4. $query_smileys = mysql_query("SELECT code,html
  5.         FROM ".$config."_smileys;" )
  6.         or die("Erreur : ".__FILE__.":".__LINE__."<BR>".mysql_error());
  7. $i=0;
  8. while(list($code_s,$html_s)=mysql_fetch_row($query_smileys)) {
  9. $search66[$i]   = '/'  . $code_s . '/si';
  10. $search66[$i]   =  addcslashes($search66[$i],"?()[]" );
  11. $remplace66[$i] = '<IMG SRC="' . $html_s . '" ALT="">';
  12. $i++;
  13. }
  14. //La case no smilies a été cochée ? si oui, on transforme les BBcodes smilies en images
  15. //
  16. if ( $nosmilie == 0 ) {
  17. // On remarquera le paramètres 10 en dernier argument, il permet de limiter le nombre d'occurences transformées
  18. $texte = preg_replace($search66,$remplace66,$texte,10);
  19. }






hops copié ;)
 
Je@nb> le code est de moi non ?

Je@nb Jte dirais un truc pour un new service (concurent d'un autre que tu connais bien) après que g fini Beaudelaire  :gun:  :gun:
Max Evans

Je@nb a écrit a écrit :

Je testerai sur le forum de max  :D  :D  




 
Non non, c bon, Sky l'a deja fait :D
L'a tout paitai le salo ! :D

Je@nb Je testerai sur le forum de max  :D  :D
skylight

Je@nb a écrit a écrit :

arf, c pas le + important la limite de smiley non ?
 
sinon suffit d'utiliser un preg replace non ?




tu rigoles là :D
 
met 10000 smilies ds un post tu va comprendre tout de suite :D

Je@nb arf, c pas le + important la limite de smiley non ?
 
sinon suffit d'utiliser un preg replace non ?
skylight je fais ca moi :
 

Code :
  1. //
  2. // Interrogation de la base de données pour extraire les smileys a transformer
  3. //
  4. $query_smileys = mysql_query("SELECT code,html
  5.         FROM ".$config."_smileys;" )
  6.         or die("Erreur : ".__FILE__.":".__LINE__."<BR>".mysql_error());
  7. $i=0;
  8. while(list($code_s,$html_s)=mysql_fetch_row($query_smileys)) {
  9. $search66[$i]   = '/'  . $code_s . '/si';
  10. $search66[$i]   =  addcslashes($search66[$i],"?()[]" );
  11. $remplace66[$i] = '<IMG SRC="' . $html_s . '" ALT="">';
  12. $i++;
  13. }


 
et a chak post
 

Code :
  1. //
  2. //La case no smilies a été cochée ? si oui, on transforme les BBcodes smilies en images
  3. //
  4. if ( $nosmilie == 0 ) {
  5. // On remarquera le paramètres 10 en dernier argument, il permet de limiter le nombre d'occurences transformées
  6. $texte = preg_replace($search66,$remplace66,$texte,10);
  7. }

skylight sauf que ya un bug de sécu ... c pas limité a 10 smilies
skylight ok
ca fait bientot 8 mois ke je fais comme ca :D
Je@nb


<?php
 
 
//déclaration d'un tableau vide
$smileys = array() ;
 
//chargement des smileys de la bd
$res= mysql_query( "SELECT code,image FROM smiley" )
while ( list($code, $img) = each(mysql_fetch_array($res)) )
{
$smileys[$code]= $img;
}


 
 
fn pour afficher les smiley :


function addSmileys($iString)
{
global $smileys
//remplacement des smileys dans un string
reset($smileys);
while ( list($code, $img)= each($smileys) )
{
$message=str_replace($code,'<img border="0" src="'.$img.'.gif">',$iString);
}
return $iString;
}

skylight

Je@nb a écrit a écrit :

Pour le topic v te chercher ça



je veux ca :D

Je@nb Jté mis la fn pour remplacer les smileys et les récup d'une BDD sur ICQ
skylight up
Je@nb Pour le topic v te chercher ça
Je@nb qd tu fais un fonction, tu as des arguments, des traitements et une valeur de retour.
 
fonction simple :
[fixed]function carre ($nb) {
$carre = $nb*$nb;
return $carre;
}
et pour l'utiliser par exemple tu fais : echo carre(2) et ça va afficher 4 ou si tu prend ché pas à partir d'une base de donnée : echo carre($data['test']);
Max Evans Je trouve pas le code de Joce :(
C t ds kel topic ? :)
Max Evans

Je@nb a écrit a écrit :

non max lol
A chaque $data['texte'] tu remplace par ce qu'il i a en argument à ta fn.




 
Rho, g trop du mal ce matin ; merde il est 14H10 :D
Je comprends pu rien :D
 
v voir la fonction de Joce alors :D ;)

Je@nb Et pour les smilies, c pas bo du tout ce que tu fais mdr.
Regarde Joce nous a donné sa fonction qui est bien + belle et optimisée
Je@nb non max lol
A chaque $data['texte'] tu remplace par ce qu'il i a en argument à ta fn.
Max Evans

Format_C a écrit a écrit :

function ta_fonction ($Textepost)
 
Ben tente, de toute façon c'est plus propre :)




 
Oki, je v tester :)
 
Donc, ca donne :
function parse ($textepost)
{
$textepost = nl2br(stripslashes(htmlentities($data[texte])));  
$textepost = preg_replace('/(\[url)([^\]]*)\](.*?)(\[\/url\])/',"<A href='\\3'>\\3</A>", $textepost);
etc etc etc
}
 
 ? :)

format_c function ta_fonction ($Textepost)
 
Ben tente, de toute façon c'est plus propre :)
Max Evans Ca y est, je viens lire :)
C un peu comme en JS ce systeme de fonctions ;)
 
En gros, je vois pas trop ce que ca donnerais :(
 

Code :
  1. functun parse (?, ? , ?)
  2. {
  3. .......
  4. }


 
Mais cette function sera tjs ds le WHILE, donc ca changera rien non ? :??: ;)

Max Evans Oki, merchi bien, je vais aller lire tout ca :) ;) :jap:
format_c http://phpdebutant.com/article41.php
Max Evans

Format_C a écrit a écrit :

Ptete que tu devrais faire une fonction aulieu de passer par cette vilaine boucle ;)  




 
Ha comment ca ?
J'suis un peu newbie :D

format_c Ptete que tu devrais faire une fonction aulieu de passer par cette vilaine boucle ;)
Max Evans

Format_C a écrit a écrit :

Pkoi tu fais un parsing pour ça ?
Un simple Erg_replace est suffisant non ?  




 
Heu oue :)
Ptete que je me suis mal exprimé alors :)
 
Voila mon code :  
<?
$textepost = nl2br(stripslashes(htmlentities($data[texte])));  
$textepost = preg_replace('/(\[url)([^\]]*)\](.*?)(\[\/url\])/',"<A href='\\3'>\\3</A>", $textepost);
$textepost = eregi_replace("([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+)","<A HREF=\"mailto:\\1\">\\1</A>", $textepost);
$textepost = ereg_replace("[ ]{2,}", "", $textepost);
 
$textepost = eregi_replace("([a-z0-9]{90})","\\1<br>",$textepost);
$textepost = str_replace("

Citation :

","<hr width=\"75%\" align=\"left\"><i>", $textepost);
$textepost = str_replace("

","</i><hr width=\"75%\" align=\"left\">", $textepost);
$textepost = str_replace("[img]","<img src=", trim($textepost));
$textepost = str_replace("[/img]",">", trim($textepost));
$textepost = str_replace("","<b>", $textepost);
$textepost = str_replace("
","</b>", $textepost);
$textepost = str_replace("","<i>", $textepost);
$textepost = str_replace("
","</i>", $textepost);
$textepost = str_replace("","<u>", $textepost);
$textepost = str_replace("
","</u>", $textepost);
$textepost = str_replace("[font color=red]","<font color=#FF0000>", $textepost);
$textepost = str_replace("[/font]","</font>", $textepost);
$textepost = str_replace("[defile]","<marquee>", $textepost);
$textepost = str_replace("[/defile]","</marquee>", $textepost);
$textepost = str_replace("

  • ","<li>", $textepost);

$textepost = str_replace(":)","<img src=\"images/smilies/smile.gif\">", $textepost);
$textepost = str_replace(":D","<img src=\"images/smilies/biggrin.gif\">", $textepost);
$textepost = str_replace(":(","<img src=\"images/smilies/frown.gif\">", $textepost);
$textepost = str_replace(";)","<img src=\"images/smilies/clin.gif\">", $textepost);
$textepost = str_replace(":ange:","<img src=\"images/smilies/ange.gif\">", $textepost);
$textepost = str_replace(":classe:","<img src=\"images/smilies/classe.gif\">", $textepost);
$textepost = str_replace(":??:","<img src=\"images/smilies/confused.gif\">", $textepost);
$textepost = str_replace(":cry:","<img src=\"images/smilies/cry.gif\">", $textepost);
$textepost = str_replace(":dodo:","<img src=\"images/smilies/dodo.gif\">", $textepost);
$textepost = str_replace(":fou:","<img src=\"images/smilies/fou.gif\">", $textepost);
$textepost = str_replace(":fuck:","<img src=\"images/smilies/fuck.gif\">", $textepost);
$textepost = str_replace(":grr:","<img src=\"images/smilies/grr.gif\">", $textepost);
$textepost = str_replace(":eek:","<img src=\"images/smilies/eek.gif\">", $textepost);
$textepost = str_replace(":heink:","<img src=\"images/smilies/heink.gif\">", $textepost);
$textepost = str_replace(":hello:","<img src=\"images/smilies/hello.gif\">", $textepost);
$textepost = str_replace(":o","<img src=\"images/smilies/ho.gif\">", $textepost);
$textepost = str_replace(":jap:","<img src=\"images/smilies/jap.gif\">", $textepost);
$textepost = str_replace(":kaola:","<img src=\"images/smilies/kaola.gif\">", $textepost);
$textepost = str_replace(":lol:","<img src=\"images/smilies/lol.gif\">", $textepost);
$textepost = str_replace(":love:","<img src=\"images/smilies/love.gif\">", $textepost);
$textepost = str_replace(":na:","<img src=\"images/smilies/na.gif\">", $textepost);
$textepost = str_replace(":non:","<img src=\"images/smilies/non.gif\">", $textepost);
$textepost = str_replace(":rolleyes:","<img src=\"images/smilies/rolleyes.gif\">", $textepost);
?>
 
 
Et tout ca, c ds un WHILE, donc pour chaque message, il doit se retapper tout ca :(

format_c Pkoi tu fais un parsing pour ça ?
Un simple Erg_replace est suffisant non ?
Max Evans Hello a tous :hello:
 
Je viens de me rendre compte d'un truc aujourd'hui :??:
Je suis en train de faire un forum, et quand on poste un message ENORME, ca rame, ca rame, ca rame pour afficher ...
 
Et je me suis rendu compte que ca venait du code pour parser les smilies, les url, etc etc ...
 
Un flood enorme (400 Ko a tirer de la base MySQL) prend environ 7s a s'afficher avec le parsage des smilies, et autre ... :(
Sans parsage, ca met 0.1 s ...
 
Au passage, le code est ds une boucle WHILE, et je peux pas faire autrement :(
 
Y aurait pas un truc pour optimiser ce code ??? :??:
 
Merchi a tous :)

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