Rechercher des valeurs dans un texte et leurs executer une fonction [Résolu]

Signaler
Messages postés
39
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
1 mars 2009
-
Messages postés
39
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
1 mars 2009
-
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

Messages postés
54
Date d'inscription
vendredi 28 février 2003
Statut
Membre
Dernière intervention
10 novembre 2006

/*
**
** 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
Messages postés
39
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
1 mars 2009

Pour la fonction php j'ai utilisé cette excelente source :
http://www.phpcs.com/codes/CONVERSION-COULEURS-HTML2RGB-CREER-DEGRADES_13078.aspx
Messages postés
39
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
1 mars 2009

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
Messages postés
39
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
1 mars 2009

Merci beaucoup pour ton aide !! ça marche nikel
Messages postés
39
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
1 mars 2009

Merci beaucoup pour ton aide !! ça marche nikel