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 :

Rawurlencode() mal utilisée


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut Rawurlencode() mal utilisée
    Bonjour,

    j'ai un code qui me provoque une erreur dans la validation W3 parce que les URL générées contiennent des espaces au lieu de %20
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <li><a onclick="window.open('http://twitter.com/home?status=<?php bloginfo('name'); echo " - "; bloginfo('description'); ?> - <?php bloginfo('url'); ?>','twitter','width=450,height=300,left='+(screen.availWidth/2-375)+',top='+(screen.availHeight/2-150)+'');return false;" href="http://twitter.com/home?status=<?php bloginfo('name'); echo " - "; bloginfo('description');  echo " - "; bloginfo('url'); ?>" title="<?php bloginfo('name'); echo " - "; bloginfo('description'); ?>" target="blank"><img src="<?php echo get_template_directory_uri(); ?>/images/icon-twitter.png" alt="twitter" /> Partager sur  <?php _e('Twitter','okay'); ?></a>
    </li>
    Il n'y a pas que les " - " à contenir des espaces, bloginfo('name') et bloginfo('description') en contiennent

    J'ai essayé de remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <li><a onclick="window.open('http://twitter.com/home?status=<?php rawurlencode (bloginfo('name'); echo "%20-%20"; bloginfo('description'); echo "%20-%20"; bloginfo('url');); ?>','twitter','width=450,height=300,left='+(screen.availWidth/2-375)+',top='+(screen.availHeight/2-150)+'');return false;" href="http://twitter.com/home?status=<?php rawurlencode (bloginfo('name'); echo "%20-%20"; bloginfo('description'); echo "%20-%20"; bloginfo('url')); ?>" title="<?php bloginfo('name'); echo " - "; bloginfo('description'); ?>" target="blank"><img src="<?php echo get_template_directory_uri(); ?>/images/icon-twitter.png" alt="twitter" /> Partager sur  <?php _e('Twitter','okay'); ?></a>
    </li>
    Je ne sais pas où je me prends les pieds dans le tapis,
    mais ça ne marche pas...


    Un petit coup de main serait apprécié


    Paul

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    bloginfo est une fonction maison ? A quoi elle ressemble ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Oui c'est pour un blog développé sous Wordpress
    Enfin je ne sais pas si c'est du Wordpress ou si c'est propre au Template
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function bloginfo( $show='' ) {
    	echo get_bloginfo( $show, 'display' );
    }
    Mais comme ces fonctions sont appelées à différents endroits dans la gestion du site, je préfèrerais agir après que la fonction ait retourné quelque chose plutôt que sur la fonction elle-même...

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Le problème c'est que ta fonction ne renvoie rien, elle affiche directement.
    L'idéal ce serait qu'elle renvoie ce que tu veux récupérer par un return. Comme ça on pourrait concaténer tous les morceaux de l'url à encoder et passer le urlencode en une fois.

    Genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function bloginfo_return( $show='' ) {
    	return get_bloginfo( $show, 'display' );
    }
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo rawurlencode(bloginfo_return('name')." - ".bloginfo_return('description')." - ".bloginfo_return('url')); ?>
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Hum… joli !

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut

    Et ça marche ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Et ça marche impec !

    Merci Celira

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

Discussions similaires

  1. J'utilise firebird mais j'ai du mal avec VisualStudio
    Par JeanNoel53 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 19/09/2012, 10h18
  2. Erreur requête : clause WHERE mal utilisée
    Par anxious dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/03/2010, 02h35
  3. setter getter: du mal à correctement les utiliser à cause du return
    Par johnny3 dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 14/06/2008, 12h04
  4. Réponses: 1
    Dernier message: 26/05/2008, 18h41
  5. Utilisation des macros: bien ou mal?
    Par Thierry Chappuis dans le forum C
    Réponses: 28
    Dernier message: 10/11/2006, 13h58

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