Str_replace qui ne fonctionne pas, HELP ME PLEASE [Résolu]

Messages postés
55
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
2 avril 2012
- - Dernière réponse : phpAnonyme
Messages postés
403
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
Afficher la suite 

8 réponses

Meilleure réponse
Messages postés
403
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
13
3
Merci
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);



______________________________________________________________________

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 186 internautes nous ont dit merci ce mois-ci

Commenter la réponse de phpAnonyme
Messages postés
30
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
2 avril 2011
1
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 186 internautes nous ont dit merci ce mois-ci

Commenter la réponse de genetApt151
Messages postés
403
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
13
0
Merci
faut-il faire avec un array?

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

______________________________________________________________________
Commenter la réponse de phpAnonyme
Messages postés
55
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
2 avril 2012
0
Merci
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);

Commenter la réponse de flasher_13
Messages postés
55
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
2 avril 2012
0
Merci
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;
}			
?>
Commenter la réponse de flasher_13
Messages postés
403
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
13
0
Merci
+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


______________________________________________________________________
Commenter la réponse de phpAnonyme
Messages postés
55
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
2 avril 2012
0
Merci
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?
Commenter la réponse de flasher_13
Messages postés
403
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
13
0
Merci
Ce n'est pas mal ! c'est déconseillée.
Pour savoir le pourquoi du comment : ici


______________________________________________________________________
Commenter la réponse de phpAnonyme