Str_replace qui ne fonctionne pas, HELP ME PLEASE

Résolu
flasher_13 Messages postés 55 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 2 avril 2012 - 1 avril 2011 à 21:03
phpAnonyme Messages postés 392 Date d'inscription mercredi 28 octobre 2009 Statut Membre Dernière intervention 23 mars 2012 - 3 avril 2011 à 00:43
Bonjour à tous, je suis débutant et je bloque sur une petite bétise. Voici le problème:

J'ai une page index.php voici le code:

include('smile.php');           //fichier dans lequel se trouve ma fonction qui remplace
$statut=$affiche_di["statut"]; //la c'est ma variable d'un statut (chaine de caractères) qu'un membre à posté
addsmile($statut);	       //là c'est ma fonction qui est censé remplacé les smiley texte par des images


//voici le contenue de smile.php

<?php
function addsmile($vartext)
{
$vartext=str_replace(':)','',$vartext);
$vartext=str_replace(':/','',$vartext);
$vartext=str_replace(':(','',$vartext);
$vartext=str_replace(':p','',$vartext);
$vartext=str_replace(':P','',$vartext);
$vartext=str_replace(':D','',$vartext);
$vartext=str_replace(':d','',$vartext);
$vartext=str_replace(':o','',$vartext);
$vartext=str_replace(':O','',$vartext);
$vartext=str_replace(':s','',$vartext);
$vartext=str_replace(':S','',$vartext);
$vartext=str_replace(':dow:','',$vartext);
$vartext=str_replace(':|','',$vartext);
$vartext=str_replace('-.-','',$vartext);
$vartext=str_replace(':OO:','',$vartext);
$vartext=str_replace(':OO(:','',$vartext);
$vartext=str_replace(':OO):','',$vartext);
$vartext=str_replace(':Oo(:','',$vartext);
$vartext=str_replace(':Oo','',$vartext);
$vartext=str_replace(':@','',$vartext);

return $vartext;
}					
?>


Mon problème viens du return qui ne se fait pas je pense ou alors je ne sais pas, faut-il faire avec un array?
Aidez moi s'il vous plait je galère sur cette petite chose ^^, merci d'avance

8 réponses

phpAnonyme Messages postés 392 Date d'inscription mercredi 28 octobre 2009 Statut Membre Dernière intervention 23 mars 2012 55
1 avril 2011 à 21:45
Sous forme tableau, tu dégustera moins en ressource car tu ne fera pas un appel systhématique.

Après concernant ton souci, pour que $vartext soit accessible à l'extérieur de la fonction faut le signaler à ta fonction :
function addsmile($vartext)
{ global $vartext; .... }

Sinon tu fait un echo sur ta fonction directement :
echo addsmile($vartext);



______________________________________________________________________
genetApt151 Messages postés 30 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 2 avril 2011 1
2 avril 2011 à 00:14
Faut pas utiliser de variable globale, c'est ce qu'il y a de pire.

Voilà une solution juste :

Soit tu passes ta variable par référence comme ceci
function addsmile(&$vartext)

appel : addsmile($statut);

ou soit tu gardes ta fonction (1er post) mais fait un appel qui soit correct : $statut = addsmile($statut);

C'est un concept basic de programmation.
Pour plus d'infos :
http://www.php.net/manual/fr/language.functions.php
http://www.commentcamarche.net/contents/php/phpfonc.php3
phpAnonyme Messages postés 392 Date d'inscription mercredi 28 octobre 2009 Statut Membre Dernière intervention 23 mars 2012 55
1 avril 2011 à 21:27
faut-il faire avec un array?

A ton avis, ne serait-ce pas mieux ??

______________________________________________________________________
flasher_13 Messages postés 55 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 2 avril 2012
1 avril 2011 à 21:34
ben peut être mais je vois pas comment faire, en plus quand je met le script avec le nom de ma variable ça marche parfaitement, les smiley s'affichent:

$vartext=$affiche_di["statut"];
                        $vartext=str_replace(':)','',$vartext);
$vartext=str_replace(':/','',$vartext);
$vartext=str_replace(':(','',$vartext);
$vartext=str_replace(':p','',$vartext);
$vartext=str_replace(':P','',$vartext);
$vartext=str_replace(':D','',$vartext);
$vartext=str_replace(':d','',$vartext);
$vartext=str_replace(':o','',$vartext);
$vartext=str_replace(':O','',$vartext);
$vartext=str_replace(':s','',$vartext);
$vartext=str_replace(':S','',$vartext);
$vartext=str_replace(':dow:','',$vartext);
$vartext=str_replace(':|','',$vartext);
$vartext=str_replace('-.-','',$vartext);
$vartext=str_replace(':OO:','',$vartext);
$vartext=str_replace(':OO(:','',$vartext);
$vartext=str_replace(':OO):','',$vartext);
$vartext=str_replace(':Oo(:','',$vartext);
$vartext=str_replace(':Oo','',$vartext);
$vartext=str_replace(':@','',$vartext);

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

Posez votre question
flasher_13 Messages postés 55 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 2 avril 2012
1 avril 2011 à 21:55
Merci beaucoup phpAnonyme avec une variable globale celà fonctionne parfaitement merci beaucoup et bonne soirée à vous!

Voici le code qui fonctionne pour ceux qui serait confrontés au problème:
//extrait de index.php
include('smile.php');
$vartext=$mavariable_qui_contient_mon_texte;
addsmile($vartext);	
echo 'Texte avec des smiley en images: '.$vartext.' 
 Merci à phpAnonyme';



//smile.php
<?php
function addsmile($vartext)
{
global $vartext;
$vartext=str_replace(':)','',$vartext);
$vartext=str_replace(':/','',$vartext);
$vartext=str_replace(':(','',$vartext);
$vartext=str_replace(':p','',$vartext);
$vartext=str_replace(':P','',$vartext);
$vartext=str_replace(':D','',$vartext);
$vartext=str_replace(':d','',$vartext);
$vartext=str_replace(':o','',$vartext);
$vartext=str_replace(':O','',$vartext);
$vartext=str_replace(':s','',$vartext);
$vartext=str_replace(':S','',$vartext);
return $vartext;
}			
?>
phpAnonyme Messages postés 392 Date d'inscription mercredi 28 octobre 2009 Statut Membre Dernière intervention 23 mars 2012 55
2 avril 2011 à 01:23
+1

Je ne l'est pas précisé mais il est vrai que la deuxième solution que je lui est fournit est la plus conseillée, afin d'éviter tout effet de bord de la fonction


______________________________________________________________________
flasher_13 Messages postés 55 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 2 avril 2012
2 avril 2011 à 22:40
Merci pour ces précisions, je vais essayer de modifier le script comme ceci:
$statut = addsmile($statut);

Par contre je ne comprend pas en quoi c'est mal d'utiliser des variable globale? Niveau sécurité? Rapidité d'éxécution?
phpAnonyme Messages postés 392 Date d'inscription mercredi 28 octobre 2009 Statut Membre Dernière intervention 23 mars 2012 55
3 avril 2011 à 00:43
Ce n'est pas mal ! c'est déconseillée.
Pour savoir le pourquoi du comment : ici


______________________________________________________________________
Rejoignez-nous