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 :

"nodeValue" (DomDocument) ne fonctionne pas bien lorsque j'essaie de renvoyer "Alibaba Pictures"


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 452
    Points : 66
    Points
    66
    Par défaut "nodeValue" (DomDocument) ne fonctionne pas bien lorsque j'essaie de renvoyer "Alibaba Pictures"
    Bonjour.

    J'essaie de remplacer tous les liens (l'attribut href) de toutes les balises a contenant la chaînes de caractères sitecontent du Document (représenté par la variable: $sitecontentTable) par un nouveau URL: href="C:\laragon\www/search.php?term=$term&type=sites":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $get_a_tags = $parser->getElementsByTagName("a");
    define( 'BASE_PATH', __DIR__ . '/' );
    foreach ($get_a_tags as $get_a_tag) {
                    if (stripos($get_a_tag->getAttribute('href'), "/sitecontent/") !== false) {
                        $get_href_in_a_infobox = $get_a_tag->getAttribute('href');
                        $term = $get_a_tag->nodeValue;
                        $sitecontentTable = str_ireplace($get_href_in_a_infobox, BASE_PATH."search.php?term=$term&type=sites", $sitecontentTable);
                    }
                }
    Mais le mauvais constat est que au lieu que le paramètre term de l'URL prenne la valeur complète du nodeValue du DomDocument, qui est: Alibaba Pictures, cela retourne: href="C:\laragon\www/search.php?term=Alibaba&type=sites_Pictures".

    Et là, vous pouvez remarquer que l'erreur est que le paramètre term retourne SEULEMENT Alibaba au lieu de Alibaba Pictures et le pire c'est que dans le même URL, le paramètre type (qui ne devrait normalement pas être modifié), prend la valeur de _Pictures.

    Qu'est va mal dans mon Code ???

    Comment corriger mon Code pour que l'attribut href retourne,
    href="C:\laragon\www/search.php?term=$term&type=sites" au lieu de
    href="C:\laragon\www/search.php?term=$term&type=sites_Pictures" que ça retourne actuellement ???

    Merci de m'aider s'il vous plaît.

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 888
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 888
    Points : 6 632
    Points
    6 632
    Par défaut
    Tu ne peux pas mettre comme ça n'importe quel type de caractères dans les paramètres GET de ton URL. Certains comme les espaces, l'esperluette ou tout les caractères au delà de la zone ASCII doivent être encodés. Pour celà tu dois passer ta variable par la fonction rawurlencode() avant de l'insérer dans l'URL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo rawurlencode('Alibaba Pictures'); // Alibaba%20Pictures

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 452
    Points : 66
    Points
    66
    Par défaut
    Et bien rien n'a changé quand je fais: $term = rawurlencode($a_tag_extracted->nodeValue);. Ça ne marche pas.

Discussions similaires

  1. match ne fonctionne pas bien
    Par Tara59 dans le forum Excel
    Réponses: 4
    Dernier message: 03/03/2008, 10h43
  2. Mon tri de date ne fonctionne pas bien :(
    Par rohstev dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/07/2007, 10h58
  3. [MySQL] Boucle qui ne fonctionne pas bien que la 1ère fois
    Par R.L. dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 27/05/2006, 21h59
  4. Icone systray de connexion wifi ne fonctionne pas bien ?
    Par elitost dans le forum Windows XP
    Réponses: 5
    Dernier message: 24/02/2006, 09h43
  5. [PERL] un grep qui ne fonctionne pas bien
    Par LE NEINDRE dans le forum Langage
    Réponses: 6
    Dernier message: 03/11/2005, 16h37

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