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

  FORUM HardWare.fr
  Programmation

  PHP - besoin d'un pro des expressions regulieres (perl ou php)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

PHP - besoin d'un pro des expressions regulieres (perl ou php)

n°80765
potiron
...
Posté le 12-12-2001 à 00:54:53  profilanswer
 

Salut a tous,
 
j'ai fini le script de mon forum et je rajoute quelques fonctions qui sont plus du luxe qu'autre chose comme des BBcode mais la j'ai quelques surprises .... je raconte :
 
quand un utilisateur veut rentrer du code (HTML/PHP ...) dans le corp de son message et pour eviter que le script du forum l'evalue il selectionne son code,clique sur un bouton et un script JS le met entre 2 balises BBcode :
[COD] [/COD]
 
a chaque affichage de la page des messages j'ai une page PHP qui contient toutes mes regexp pour le corp du message et j'ai celle ci pour le COD, la voici :
 

if( eregi("(.*)(\[COD\])(.+)(\[/COD\])(.*)",$tab 'message'],$temp ) ){
 
$tab['message']="$temp[1]<font face='Verdana' size=2 color='red'><blockquote><pre><hr><code>".htmlentities($temp['3'])."</code><hr></pre></blockquote></font>$temp[5]";
 
}

 
le probleme : en rajoutant juste cette regexp alors que j'en ai 60 pour les emoticones et 15 pour les BBcode elle me PLOMBE COMPLETEMENT les ressources et la page qui etait généré en 0.01 sec passe a 1.8 sec  :ouch:  :??:  :fou: ---->>> je multiplie le temps par 180 !!
 
pourquoi ? comment ? a cause de quoi ? ....
vous auriez une bonne solution pour contourner ce probleme ??
 
merci !

 

[edtdd]--Message édité par potiron--[/edtdd]

mood
Publicité
Posté le 12-12-2001 à 00:54:53  profilanswer
 

n°80829
gizmo
Posté le 12-12-2001 à 11:28:03  profilanswer
 

j'espère que toutes tes regexp ne sont pas codés dans le même style...
 
essaye ca:
 
preg_replace("/\[COD\](.+)\[\/COD\]/si","<font face='Verdana' size=2 color='red'><blockquote><pre><hr><code>".htmlentities($1)."</code><hr></ pre></blockquote></font>",$tab[message]);
 
mais a mon avis c'est le htmlentities qui prend le plus de temps la dedans.

n°80856
Lord II
PIB2000
Posté le 12-12-2001 à 12:49:13  profilanswer
 

Ou trouver une doc sur tous ce codes utilisé dans les fonctions d'expression regulière


---------------
La bave du crapaud n'empèche pas la caravane de passer .
n°80861
gizmo
Posté le 12-12-2001 à 12:53:50  profilanswer
 

lord ii a écrit a écrit :

Ou trouver une doc sur tous ce codes utilisé dans les fonctions d'expression regulière  




 
ben, sur le site officiel... entre autre.

n°80916
potiron
...
Posté le 12-12-2001 à 15:00:13  profilanswer
 

gizmo a écrit a écrit :

j'espère que toutes tes regexp ne sont pas codés dans le même style...
 
essaye ca:
 
preg_replace("/\[COD\](.+)\[\/COD\]/si","<font face='Verdana' size=2 color='red'><blockquote><pre><hr><code>".htmlentities($1)."</code><hr></ pre></blockquote></font>",$tab[message]);
 
mais a mon avis c'est le htmlentities qui prend le plus de temps la dedans.  




 
.... et comment je fais pour recup ce qui a devant et derriere ??
ben oui, je dois lui appliquer des modifs differentes -> nl2br pour 1 et 5 mais pas pour 3 par exemple ...etc  :ouch:  
en plus je vois que tu l'as pas testé sinon tu aurais remarqué qu'elle ne peut pas fonctionner avec un htmlentities()  :sarcastic:
sinon a fonction egal le preg_replace est + rapide que eregi mais j'utilise une autre + rapide quand c'est possible pour remplacer les [ B] [ /B] par exemple -> str_replace : je gagne environ 30% sur preg_replace a condition de pouvoir faire les remplacements 1 par 1

 

[edtdd]--Message édité par potiron--[/edtdd]

n°80928
gizmo
Posté le 12-12-2001 à 15:11:09  profilanswer
 

pff, t'es fatigant toi, au lieu de simplement remplacer les < par <  
non, bien sur que j'ai pas testé, j'ai pas que ca a foutre non plus.

n°81013
potiron
...
Posté le 12-12-2001 à 16:34:47  profilanswer
 

:non:  
 
bon ben je remarque que tu reponds sans réfléchir en plus :sarcastic:  :D car  
le probleme n'est pas la -> en utilisant cette fonction le code qui est passé DANS le htmlentities (pas autour) n'est jamais evalué ... pour t'en convaincre remplace le htmlentities par un md5 par exemple et tu comprendras que cette fonction ne peut pas etre utilisé !
 
si tu as pas compris je develloppe : la valeur \\1 passé comme ca htmlentities("\\1" ) n'est pas traité par le htmlentities, c'est bon, tu imprimes  :??:  :lol:

n°81019
gizmo
Posté le 12-12-2001 à 16:39:39  profilanswer
 

ben oui, j'ai bien compris, il n'empèche que htmlentities est nettement plus lourd que le bête remplacement de "<" que tu peux faire avec un simple preg_replace.

n°81098
potiron
...
Posté le 12-12-2001 à 20:08:44  profilanswer
 

ah ok !!!!!!
je pensais que tu etais partie dans l'autre sens  :ange:  
j'ai pas fait de bench sur htmlentities .... ben tient, je vais en faire un tout de suite :
 
voici sur quoi j'ai fait le bench :
 
$mess='<br><p><h3></h3><a href="toto">lien</a>  
<table><tr>
<td></td><td></td><td></td><td> </td><td></td><td></td><td></td><td></td> <td></td><td></td><td></td>td> </td><td></td><td></td>
</tr></table>';
 
bench a vide pour 100 boucles :  0.014283916966083 sec
en rajoutant $mess=htmlentities($mess) : 0.016345954 sec
avec  
$mess=str_replace('<','X',$mess);
$mess=str_replace('>','X',$mess);
0.019518813 sec
 
et pour finir  
$mess=preg_replace ('|<|','X',$mess);
$mess=preg_replace ('|>|','X',$mess);
0.021766663
 
comme tu vois le htmlentities est la fonction la + optimisé pour faire ca car elle est PREVU POUR sans compter qu'elle remplace aussi les ' et " + tous les caracteres ayant une valeur en HTML éçèêô ......etc


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  PHP - besoin d'un pro des expressions regulieres (perl ou php)

 

Sujets relatifs
[PHP]Accents[PHP] Récupérer le login de l'user identifié avec .htaccess (apache)
[PHP] Recherche programmeur php (PHP / regular expressions] ptites questions!!
Est ce qu'il existe un équivalent de" l'include " (PHP) en ASP ?[perl]: trnasformer une chaine de caractère
[PHP] 4.1.0[Cryptage/PHP]
[PHP ou JAVASCRIPT] Raffraichir 
Plus de sujets relatifs à : PHP - besoin d'un pro des expressions regulieres (perl ou php)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR