Problème de Parsing :((( [PHP] - Programmation
Marsh Posté le 24-06-2002 à 13:08:07
Pkoi tu fais un parsing pour ça ?
Un simple Erg_replace est suffisant non ?
Marsh Posté le 24-06-2002 à 13:13:25
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); |
","</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("
$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
Marsh Posté le 24-06-2002 à 13:16:00
Ptete que tu devrais faire une fonction aulieu de passer par cette vilaine boucle
Marsh Posté le 24-06-2002 à 13:16:44
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
Marsh Posté le 24-06-2002 à 13:24:54
Oki, merchi bien, je vais aller lire tout ca
Marsh Posté le 24-06-2002 à 13:34:58
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 :
|
Mais cette function sera tjs ds le WHILE, donc ca changera rien non ?
Marsh Posté le 24-06-2002 à 13:45:54
function ta_fonction ($Textepost)
Ben tente, de toute façon c'est plus propre
Marsh Posté le 24-06-2002 à 13:53:53
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
}
?
Marsh Posté le 24-06-2002 à 14:06:10
non max lol
A chaque $data['texte'] tu remplace par ce qu'il i a en argument à ta fn.
Marsh Posté le 24-06-2002 à 14:06:49
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
Marsh Posté le 24-06-2002 à 14:09:59
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
Je comprends pu rien
v voir la fonction de Joce alors
Marsh Posté le 24-06-2002 à 14:15:02
Je trouve pas le code de Joce
C t ds kel topic ?
Marsh Posté le 24-06-2002 à 14:19:41
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']);
Marsh Posté le 24-06-2002 à 14:42:58
Jté mis la fn pour remplacer les smileys et les récup d'une BDD sur ICQ
Marsh Posté le 24-06-2002 à 14:43:28
Je@nb a écrit a écrit : Pour le topic v te chercher ça |
je veux ca
Marsh Posté le 24-06-2002 à 14:44:23
|
fn pour afficher les smiley :
|
Marsh Posté le 24-06-2002 à 14:47:27
je fais ca moi :
Code :
|
et a chak post
Code :
|
Marsh Posté le 24-06-2002 à 14:47:55
arf, c pas le + important la limite de smiley non ?
sinon suffit d'utiliser un preg replace non ?
Marsh Posté le 24-06-2002 à 14:48:40
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à
met 10000 smilies ds un post tu va comprendre tout de suite
Marsh Posté le 24-06-2002 à 15:47:17
Je@nb a écrit a écrit : Je testerai sur le forum de max |
Non non, c bon, Sky l'a deja fait
L'a tout paitai le salo !
Marsh Posté le 24-06-2002 à 16:25:23
Jte dirais un truc pour un new service (concurent d'un autre que tu connais bien) après que g fini Beaudelaire
Marsh Posté le 28-06-2002 à 17:32:17
skylight a écrit a écrit : je fais ca moi :
|
hops copié
Je@nb> le code est de moi non ?
Marsh Posté le 02-07-2002 à 18:55:28
déjà tu passes tous les ereg en preg.
sinon, ex. d'optimisation :
Code :
|
(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
Marsh Posté le 24-06-2002 à 12:55:16
Hello a tous
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
---------------
Envie d'un bol d'air ? Traxxas Revo 3.3