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 :

Récupérer tous les ID/CLASS


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2013
    Messages : 6
    Par défaut Récupérer tous les ID/CLASS
    Bonjour à tous,

    mon problème est celui-ci : je dois gérer les styles d'un site avec de nombreuses CSS et pages HTML. Le but est de détecter les ID et les CLASS présents dans le CSS mais qui ne sont aujourd'hui pas utilisé sur le site (donc pouvant être supprimé).

    Comme je l'ai indiqué dans le titre, je souhaiterais pouvoir récupérer les valeurs de l'ensemble des ID et des CLASS présent dans un fichier HTML. Pour cela, j'ai remarqué que XPATH pourrait être utile.

    Après plusieurs recherches, j'ai fini par produire ce code:
    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
    16
    17
    18
    19
    $file = "test.html";
    $doc = new DOMDocument();
    $doc->loadHTMLFile($file);
     
    $xpath = new DOMXpath($doc);
     
    // test 1: pour tout le contenu avec un ID
    $elements = $xpath->query("//*[@id]");
     
    if (!is_null($elements)) {
      foreach ($elements as $element) {
        echo "<br/>[". $element->nodeName. "]";
     
        $nodes = $element->childNodes;
        foreach ($nodes as $node) {
          echo $node->nodeValue. "\n";
        }
      }
    }
    Il me permet ainsi de récupérer le nom de toutes les balises contenant des ID dans un tableau. Mais ce n'est pas exactement ce que je veux.

    1er problème : Je voudrais récupérer la valeur de mes ID, et non celle des balises dans lesquelles elles sont.

    2ème problème (qui est en réalité une question) : Pensez-vous que j'ai opté pour la meilleure méthode possible ? (Je sais qu'en JavaScript je pouvais également utiliser getElementsByTagName puis récupérer l'ID)

    Mon objectif à terme est de pouvoir comparer mon résultat à celui du CSS. Pour cela, j'ai identifié que, par la suite, j'aurais à réitérer ce processus pour tous les fichiers HTML présents dans un dossier (utilisation de opendir/readdir). Mais ce n'est pas tout, je dois faire de même sur des fichiers JSP (traitement similaire), mais également JS (traitons un seul problème à la fois ).

    Je m'en remets donc à vos avis éclairés

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    je me permet d'avancer le fait que c'est un peu risqué, certaines classes et id peuvent etre utilisés soit par du js soit par du css, et surtout, avec des sélecteurs complexes.(exemple: prendre les 4premiers machins sous le 1er h1)

    1er probleme:
    Ton node comporte <p> par exemple. pour avoir son id, il faut récupérer l'attribut du node. je connais pas spécialement ta bibliothèque mais ca devrait etre un getAttribute ou un truc du genre.

    2ème problème.
    ca me parait pas trop mal comme méthode, je vois plus de problème venir en script js qu'en php.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2013
    Messages : 6
    Par défaut
    Citation Envoyé par gototog Voir le message
    je me permet d'avancer le fait que c'est un peu risqué, certaines classes et id peuvent etre utilisés soit par du js soit par du css, et surtout, avec des sélecteurs complexes.(exemple: prendre les 4premiers machins sous le 1er h1)
    je sais que la partie JS du site peut contenir des classes et id. Mais je traiterais ce point lorsque mon problème principal sera résolu.
    Citation Envoyé par gototog Voir le message
    1er probleme:
    Ton node comporte <p> par exemple. pour avoir son id, il faut récupérer l'attribut du node. je connais pas spécialement ta bibliothèque mais ca devrait etre un getAttribute ou un truc du genre.
    Justement, en théorie je dois utiliser getAttribute étant donné que $element est un objet de type DOMElement. Toutefois j'obtiens ce message :

    "Notice: Undefined property: DOMElement::$getAttribute"
    Citation Envoyé par gototog Voir le message
    2ème problème.
    ca me parait pas trop mal comme méthode, je vois plus de problème venir en script js qu'en php.
    Merci pour ton avis

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Par défaut
    bonjour,

    cleanCSS est un outil qui nettoie le css,supprime les espaces... détecte les classes non utilisées.

    http://dotnetsurfers.com/blog/2008/1...eb-application

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2013
    Messages : 6
    Par défaut
    Merci de ta réponse, toutefois je connais déjà les plugins Firefox Dust-Me et CSS Usage. Et ils ne répondent pas totalement à mes besoins. En effet, ils ne permettent une recherche qu'avec un degré de profondeur dans l'arborescence.

    L'utilisation de DustMe avec le sitemap XML ? Utile pour les pages non sécurisées du site, mais pas pour tout. De plus, dans mon cas, j'ai près de 1500 pages listées dans mon sitemap, et DUST-ME tourne indéfiniment quand je le lance (je l'ai laissé 2 jours).

    J'ai malgré tout vérifié pas moins de 1380 pages HTML manuellement, mais j'ai compris que certaines parties du site manquaient encore, notamment celles avec connexion et accès restreint en fonction des droits utilisateurs.

    C'est pourquoi je pense que le plus simple est de vérifier directement l'ensemble des fichiers en local.

    edit: Pour éviter d'avoir cette réponse, je précise que j'ai également testé sans succès le site Unused-CSS

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2013
    Messages : 6
    Par défaut
    Je me demande si mon topic ne devrait pas plutôt être posté dans la rubrique "XPATH" sous "XML"...

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 17/11/2014, 20h10
  2. [XPATH 1.0] Récupérer tous les ID/CLASS
    Par killer17 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 08/04/2013, 16h40
  3. [RegEx] Récupérer tous les liens d'une certaine classe CSS
    Par Lost In Translation dans le forum Langage
    Réponses: 17
    Dernier message: 02/07/2009, 17h54
  4. Réponses: 7
    Dernier message: 08/01/2005, 14h24
  5. [Plugin] Récupérer tous les fichiers *.java d'un workspace
    Par Satch dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 02/06/2004, 13h51

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