logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 09-02-2011 20:15:13

PengouinPdt
Membre
Lieu : 47 - France
Distrib. : Sid | Xebian
Noyau : Linux 5.2.xyz
(G)UI : XFCE
Inscription : 09-02-2011
Site Web

[PHP] Remplacer un while trop gourmand

Bonsoir :

Y'aurait-il moyen de remplacer ce bout de code qui me semble gourmand ?

  while(preg_match($search[0], $buffer)) {
    $buffer = preg_replace($search, $replace, $buffer);
  }

Hors ligne

#2 09-02-2011 20:49:51

cthuluh
Membre
Distrib. : stable
Noyau : stable
(G)UI : ratpoison
Inscription : 17-08-2010

Re : [PHP] Remplacer un while trop gourmand

Regarde les arguments à passer à preg_replace() :

mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )


$limit : si égal à -1, toutes les occurrences sont remplacées.
$count : renvoie le nombre d'occurrences qui ont été remplacées.

Donc si je comprends bien,

preg_replace($toto, $tata, $tutu);


suffit.
Tu peux utiliser une boucle avec $limit = 1, et tester la valeur de $count,
mais ça me paraît coûteux et pas forcément plus clair.

Hors ligne

#3 09-02-2011 23:48:08

PengouinPdt
Membre
Lieu : 47 - France
Distrib. : Sid | Xebian
Noyau : Linux 5.2.xyz
(G)UI : XFCE
Inscription : 09-02-2011
Site Web

Re : [PHP] Remplacer un while trop gourmand

Vraiment désolé, mais non, cela ne me traite pas l'ensemble du buffer, dans un contexte d'élément HTML imbriqué, et recherché (i.e: balises 'dl' imbriquées) !

Hors ligne

#4 23-05-2011 23:04:28

david42
Membre
Distrib. : Squeeze
Noyau : 2.6.32-5-amd64
Inscription : 18-05-2011

Re : [PHP] Remplacer un while trop gourmand

Bonjour,

un truc dans le genre ca peut t'aider ?

if ( strpos ($buffer, $search[0]) !== false ){
$buffer = str_replace ( $search, $replace, $buffer ) }


et si $search[0] n'est autre que $search, tu peux virer la première ligne et la dernière accolade.

Hors ligne

Pied de page des forums