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

flasher_13 55 Messages postés mercredi 2 février 2005Date d'inscription 2 avril 2012 Dernière intervention - 1 avril 2011 à 21:03 - Dernière réponse : phpAnonyme 403 Messages postés mercredi 28 octobre 2009Date d'inscription 23 mars 2012 Dernière intervention
- 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 

Votre réponse

8 réponses

Meilleure réponse
phpAnonyme 403 Messages postés mercredi 28 octobre 2009Date d'inscription 23 mars 2012 Dernière intervention - 1 avril 2011 à 21:45
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);



______________________________________________________________________

Merci phpAnonyme 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de phpAnonyme
Meilleure réponse
genetApt151 30 Messages postés lundi 7 mai 2007Date d'inscription 2 avril 2011 Dernière intervention - 2 avril 2011 à 00:14
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

Merci genetApt151 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de genetApt151
phpAnonyme 403 Messages postés mercredi 28 octobre 2009Date d'inscription 23 mars 2012 Dernière intervention - 1 avril 2011 à 21:27
0
Merci
faut-il faire avec un array?

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

______________________________________________________________________
Commenter la réponse de phpAnonyme
flasher_13 55 Messages postés mercredi 2 février 2005Date d'inscription 2 avril 2012 Dernière intervention - 1 avril 2011 à 21:34
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
flasher_13 55 Messages postés mercredi 2 février 2005Date d'inscription 2 avril 2012 Dernière intervention - 1 avril 2011 à 21:55
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
phpAnonyme 403 Messages postés mercredi 28 octobre 2009Date d'inscription 23 mars 2012 Dernière intervention - 2 avril 2011 à 01:23
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
flasher_13 55 Messages postés mercredi 2 février 2005Date d'inscription 2 avril 2012 Dernière intervention - 2 avril 2011 à 22:40
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
phpAnonyme 403 Messages postés mercredi 28 octobre 2009Date d'inscription 23 mars 2012 Dernière intervention - 3 avril 2011 à 00:43
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.