#1 29-08-2006 09:07:17

Toucouleur
Survivors
Lieu: Perpignan
Date d'inscription: 30-09-2005
Messages: 790
Site web

Help Preg_replace

Désolé de déranger, je n'aime pas passer pour un newbie, mais je prend la tête sur un truc tout con et je ne vois pas ce quine lui plait pas, on peut pas dire que cela soit compliqué, je veux just incrémenter de 1 à chaque passage de la fonction my_test apellée par le preg_replace

Qu'est ce que j'ai oublié encore ?

Code:

<?php

$test_count = 1;

function my_test() {
    global $test_count;
    $test_count++;
    return $test_count;    
}

$test = "test ici <h1>première balise</h1> et là encore du texte et voila la <h1>deuxième balise</h1> et ensuite j'en ai encore <h1>une pour le fun</h1>";

echo preg_replace( '@</h1>@', '<small>(indice balise : '.  my_test() . ')</small></h1>', $test);

?>

Oui je sais le platre ça me réussi pas, vraiment désolé sad

Derni�re modification par Toucouleur (29-08-2006 09:07:31)


"Le luxe est naturellement associé à la richesse qui permet des investissements qui visent le pur agrément et non le profit."

Hors ligne

 

#2 29-08-2006 09:26:19

Phobos
'tetine'
Lieu: Marseille
Date d'inscription: 16-07-2005
Messages: 867
Site web

Re: Help Preg_replace

Ta fontion my_test n'est appellée qu'une seule fois, le second argument n'est executé qu'une seule fois aussi smile
Les solutions serait moins dures à trouver si tu ne remplaçait pas des </h1> par des chaines en contenant wink

exemple :

Code:

<?php

$test_count = 0;

function my_test() {
    global $test_count;
    $test_count++;
    return $test_count;    
}

$test = "test ici <h1>première balise</h1> et là encore du texte et voila la <h1>deuxième balise</h1> et ensuite j'en ai encore <h1>une pour le fun</h1>";

while(eregi('<h1>',$test)){
$test = preg_replace( '"<h1>(.*?)</h1>"', '<h2>\\1<small>(indice balise : '.  my_test() . ')</small></h2>', $test, 1);
}

echo $test;

?>

edit : j'ai ajouté le paramètre count=1 à la preg_replace, ainsi elle ne remplace que la première chaîne trouvée, et tant qu'il y a d'autres chaines, la boucle recommence smile
Ca ne marche correctement que si $test à toutes ses balises bien fermées, je te laisse le soin de mettre les conditions qu'il faut, j'ai pas le temps, je reviens vers midi wink

Derni�re modification par Phobos (29-08-2006 09:29:36)


Forum - Taggle Boost - Novetys
dispo par mail, me cherchez pas trop sur msn, irc ou Gtalk wink

Hors ligne

 

#3 29-08-2006 11:43:22

fbparis
Survivors
Lieu: Paris
Date d'inscription: 14-07-2006
Messages: 1896
Site web

Re: Help Preg_replace

C'est preg_replace_callback qu'il faut utiliser pour ce genres de manips smile

http://fr2.php.net/manual/fr/function.p … llback.php

Hors ligne

 

#4 29-08-2006 11:54:33

Phobos
'tetine'
Lieu: Marseille
Date d'inscription: 16-07-2005
Messages: 867
Site web

Re: Help Preg_replace

rah mince je croyais que c'était pour php5 cette fonction smile


Forum - Taggle Boost - Novetys
dispo par mail, me cherchez pas trop sur msn, irc ou Gtalk wink

Hors ligne

 

#5 29-08-2006 12:25:58

Toucouleur
Survivors
Lieu: Perpignan
Date d'inscription: 30-09-2005
Messages: 790
Site web

Re: Help Preg_replace

merci à vous tous, et plus particulièrement fbparis  qui vient de me donner la soluc complète au pb :

Code:

<?php
$test_count = 0;

function my_test($matches) {
global $test_count;
$test_count++;
return '<small>(indice balise : '. $test_count . ')</small></h1>';
}

$test = "test ici <h1>première balise</h1> et là encore du texte et voila la <h1>deuxième balise</h1> et ensuite j'en ai encore <h1>une pour le fun</h1>";

echo preg_replace_callback( '@</h1>@', 'my_test', $test);
?>

"Le luxe est naturellement associé à la richesse qui permet des investissements qui visent le pur agrément et non le profit."

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 R. Andersson