Forum dédié au moteur de recherche et aux techniques d'optimisation par #taggle
Vous n'�tes pas identifi�.
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 ?
<?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é
Derni�re modification par Toucouleur (29-08-2006 09:07:31)
Hors ligne
Ta fontion my_test n'est appellée qu'une seule fois, le second argument n'est executé qu'une seule fois aussi
Les solutions serait moins dures à trouver si tu ne remplaçait pas des </h1> par des chaines en contenant
exemple :
<?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
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
Derni�re modification par Phobos (29-08-2006 09:29:36)
Hors ligne
C'est preg_replace_callback qu'il faut utiliser pour ce genres de manips
http://fr2.php.net/manual/fr/function.p … llback.php
Hors ligne
rah mince je croyais que c'était pour php5 cette fonction
Hors ligne
merci à vous tous, et plus particulièrement fbparis qui vient de me donner la soluc complète au pb :
<?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); ?>
Hors ligne