Rechercher des valeurs dans un texte et leurs executer une fonction

Résolu
taxidogkiller Messages postés 39 Date d'inscription vendredi 20 février 2004 Statut Membre Dernière intervention 1 mars 2009 - 3 nov. 2006 à 18:41
taxidogkiller Messages postés 39 Date d'inscription vendredi 20 février 2004 Statut Membre Dernière intervention 1 mars 2009 - 5 nov. 2006 à 18:30
Bonjour,

j'ai céé un systéme qui comme sur skyblog permet de créer des texte dégradés, j'ai créé le formulaire ( le dégradé s'y inscrit : [degrade = couleur1|couleur2]le texte/degrade ) j'ai créé la fonction php qui créé le dégradé ( qui s'appelle de cette facon : texteDegrade2( "le texte à mettre en dégradé","couleur1|couleur2" ) comment puis-je faire pour trouver les textes à mettre en dégradé dans une variable contenant le texte complet du formulaire et comment puis-je leurs éxécuter la fonction ?

Merci d'avance !

5 réponses

cs_alexscott Messages postés 54 Date d'inscription vendredi 28 février 2003 Statut Membre Dernière intervention 10 novembre 2006
5 nov. 2006 à 02:03
/*
**
** Cette fonction est modifiee pour retourner le resultat au lieu de l'afficher
**
*/
function texteDegrade($text,$starthtml,$endhtml)
{
$start=html2rgb($starthtml);
$end=html2rgb($endhtml);
$nb=strlen($text);

if ($nb>0)
{
for ($i=0;$i<=$nb;$i++)
{
for ($j=0;$j<3;$j++)
$buffer[$j] = $start[$j] + ($i/$nb)*($end[$j]-$start[$j]);

$ret .= "".substr($text,$i,1)."";//ICI
}
}

return($ret);//ET LA
}

/*
**
** Cette fonction est modifiee pour retourner le resultat au lieu de l'afficher
**
*/
function texteDegrade2($text,$couleurs)
{
$couleurs=strtolower($couleurs);

$tablo=explode('|',$couleurs);
$nb=sizeof($tablo)-1;
$tablo2=explode('²',decoupe($text,$nb));

for ($i=0;$i<$nb;$i++)
$ret .= texteDegrade($tablo2[$i],$tablo[$i],$tablo[$i+1]);//ICI

return($ret);//ET LA
}

#MAIN

$textetest = "le texte avant le dégradé [degrade=000000|ffff00|ff0000]] texte au couleur de la belgique /degrade le texte apres le degrader";

function moncallback($matches)
{
return(texteDegrade2($matches[2],$matches[1]));
}


$result = preg_replace_callback('#\[degrade=(.+)\](.+)\/degrade\#isU', 'moncallback' , $textetest);

echo $result;

--------------------------------
----------EXPLICATIONS----------
--------------------------------

Tout d'abord preg_replace renvoie le resultat du remplacement c'est pour ca que ca te fait rien.
Ensuite il faut pas remplacer le texte simplement puisque tu dois executer la fonction texteDegrade2 donc il faut utiliser une fonction de callback qui permet de le faire.
J'ai du modifie les 2 fonctions de degrades pour qu'elle retourne plutot que de simplement affiche sinon tu te retrouverais a avoir le texte n'importe ou (tu peux tester ;) )
tu etais vraiment pas loin, persevere =)
GL HF
3
taxidogkiller Messages postés 39 Date d'inscription vendredi 20 février 2004 Statut Membre Dernière intervention 1 mars 2009
3 nov. 2006 à 19:15
Pour la fonction php j'ai utilisé cette excelente source :
http://www.phpcs.com/codes/CONVERSION-COULEURS-HTML2RGB-CREER-DEGRADES_13078.aspx
0
taxidogkiller Messages postés 39 Date d'inscription vendredi 20 février 2004 Statut Membre Dernière intervention 1 mars 2009
4 nov. 2006 à 15:00
J'avais pensé à la fonction preg_replace :

$textetest =  "le texte avant le dégradé [degrade=000000|ffff00|ff0000] texte au couleur de la belgique /degrade le texte apres le degrader";

preg_replace('#\[degrade=(.+)\](.+)\/degrade\#isU', 'texteDegrade2($1,$2)' , $textetest);

echo $textetest;

désolé si je ne suis pas trés clair, j'ai 14 ans et je débute dans php  !
 merci d'avance
0
taxidogkiller Messages postés 39 Date d'inscription vendredi 20 février 2004 Statut Membre Dernière intervention 1 mars 2009
5 nov. 2006 à 18:29
Merci beaucoup pour ton aide !! ça marche nikel
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
taxidogkiller Messages postés 39 Date d'inscription vendredi 20 février 2004 Statut Membre Dernière intervention 1 mars 2009
5 nov. 2006 à 18:30
Merci beaucoup pour ton aide !! ça marche nikel
0
Rejoignez-nous