IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Return de fonction incompréhensible


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Août 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 2
    Par défaut Return de fonction incompréhensible
    Bonjour à tous !

    Voici un code tout bête, qui retourne un résultat inattendu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <?php
     
    function test () {
    	$newString2="<div";   // On a une chaîne
    	echo $newString2."\n";   // On affiche la chaîne
    	return ($newString2);   // On retourne la chaîne
    }
     
    $row = test();   // On appelle la fonction
    echo "RETURN IS :".$row;
     
    ?>
     
    Fin du code
    Ce qui nous affiche en code source html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <div 
    RETURN IS :>
    1ère remarque : le "<" a été changé en ">" !!
    2e remarque : le code après le "<" n'est pas affiché !! "div" et "Fin du code" ont disparu !!

    Si quelqu'un a une explication...

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Si tu ecris des balises non fermées, l'interpretation va être variable selon les navigateurs.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 494
    Par défaut
    C'est normal... tu répètes 2 fois.
    De toute façon elle n'est pas correcte et n'a aucun sens.

  4. #4
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Et personnellement je n'ai aucun problème avec ce code, le code source généré est bien :

    Code x : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <div
    RETURN IS :<div

  5. #5
    Candidat au Club
    Inscrit en
    Août 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 2
    Par défaut
    De toute façon elle n'est pas correcte et n'a aucun sens.
    Oui, à l'origine c'était une vraie fonction, mais qui ne fonctionnait pas. J'ai supprimé au fur et à mesure des éléments de la fonction pour ne garder que la partie qui foire.

    C'est normal... tu répètes 2 fois.
    Je vais expliciter un peu mieux ce que fait le code.

    La fonction test() :

    1. On définit une variable qui contient une chaîne.
    2. On affiche la chaîne.
    3. On retourne la chaîne.

    Le script :

    1. On récupère la chaîne créée par test();
    Evidemment, test() affiche la chaîne à cause de l'echo.
    2. On affiche à présent la chaîne, et on regarde si elle correspond à la chaîne précédente affichée par l'echo.

    Si je retire les lignes de DEBUG, le code donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
     
    function test ($string) {
    	/* traitement de la chaine
    	...
    	...
    	*/
    	return ($newString);   // On retourne la chaîne traitée
    }
     
    echo test("<div></div>");
     
    ?>
    @sabotage : Exact !! Bien vu, l'erreur venait en effet de la balise mal fermée et de l'interprétation de Chrome qui refuse d'afficher la suite du code après une erreur de chevron. Merci !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Aucun return sur fonction toute simple
    Par Sanceray3 dans le forum Langage
    Réponses: 4
    Dernier message: 24/03/2010, 19h26
  2. Fonction incompréhensible
    Par hanane78 dans le forum MATLAB
    Réponses: 3
    Dernier message: 19/11/2007, 15h12
  3. Réponses: 59
    Dernier message: 09/11/2007, 18h02
  4. [Yahoo UI] Return sur fonction (yui)
    Par vraipolite dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 18/04/2007, 18h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo