8797 sujets

Développement web côté serveur, CMS

Bonjour à tous,

J'ai un petit soucis avec une expression régulière... bon c'est vrai c'est pas mon fort mais quand même...

Je vous explique...

J'ai un texte dans une base de donnée, et je voudrai qu'a la lecture il fasse l'extraction d'une partie seulement.

En gros, j'ai un certain nombre de caratères, un mot spécifique, et encore une suite de caractères.

Ma fonction actuelle, fonctionne très bien mais gros inconvénient, la requête met presque 5 voir 6 sec à afficher la page...

Voici mon code :
$regex="^(.*)+(Introduction<\/code>)+(.*)";
$text=bbcodes($data['desc_art']);
eregi($regex,$text,$modif);
echo substr($modif[3],0,400)."...";


le texte en question fait a peu prêt 2000 caractères mais à terme cette fonction devra pouvoir gérer au moins 10000 caractères...

Quelqu'un auait-il une optimisation à me proposé svp ?

Merci d'avance Smiley cligne

Edit: bon apparemment la lenteur viens du nombre de caractères à traiter.
j'ai pour le moment partiellement résolu le souci en faisant celà :
$text=substr(bbcodes($data['desc_art']),0,500);
$regex="^(.*)+Introduction<\/code>+(.*)";
ereg($regex,$text,$modif);
echo $modif[2]."...";


mais je recherche plutôt quelque chose du genre...
$regex="^(.*)+Introduction<\/code>+(.*)+<code>+(.*)";

malheureusement cette regex ne fonctionne pas .. si quelqu'un à une idée Smiley cligne
Modifié par Blackstorm (06 Aug 2008 - 22:44)
Je vois des balises "<code>" dans ton texte à traiter, tu pourrais peut-être en faire un vrai document XML et le traiter avec l'API DOM qui sera plus rapide je pense. Mais évidemment ça dépent si tu peux faire de ton texte un document XML.