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);



______________________________________________________________________
3
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
3
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 ??

______________________________________________________________________
0
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);

0

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;
}			
?>
0
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


______________________________________________________________________
0
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?
0
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


______________________________________________________________________
0
Rejoignez-nous