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 :

Analyseur HTML pour retrouver toutes les couleurs d'un code


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Analyseur HTML pour retrouver toutes les couleurs d'un code
    Bonjour,
    Pour notre application, nous souhaitons analyser un code html pour retrouver le nombre de couleurs utilisées... Ce code html est par exemple de la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p style="text-align: center;"><span style="color: #ff0000;"><span style="font-size: xx-large;">Votre mot <span style="color: #0000ff;">ic</span> i !</span></span></p>
    En fait ce code html est entré par l'internaute sur une interface en ligne type tinyMCE (éditeur de texte en ligne). On récupère donc ce code et on veut l'analyser pour retrouver le nombre de couleurs utilisées par l'internaute.
    Connaissez-vous des parseurs PHP qui effectuent ce genre d'opération ?
    Merci pour votre aide.

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    DOM permet de parser du HTML : http://www.php.net/manual/fr/domdocument.loadhtml.php
    Sinon une simple regexp type /#[0-9A-F]{6}/i pourrait suffire http://fr.php.net/preg-match-all
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    SAlut Seb,
    Merci pour ta réponse rapide.
    En ce qui concerne ta deuxieme proposition en fait c'est pas si simple. Regarde le code html ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <p style="text-align: center;"><span style="color: #ff0000;"><span style="font-size: xx-large;">Votre phrase d'accroche ici !</span></span></p>
    <p style="text-align: center;">bnbvnvbnvnvbnvbn</p>
    Si on cherche les #color on va en trouver 1 (la couleur #ff0000), alors q'en fait le code html affiché comporte deux couleurs : la couleur #ff0000 et du noir !
    C'est le texte inclut dans les balises <p> qui pose problème... Vois-tu une solution... je galère depuis hier...
    Merci !

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    Si tu sais que le texte est noir par défaut alors quel est le pb ?
    Quelle est la finalité de l'opération ?

    alors q'en fait le code html affiché comporte deux couleurs : la couleur #ff0000 et du noir !
    Attention, PHP ne pourra pas t'aider à connaître la couleur d'affichage effective d'un texte. Peut-être en Javascript...
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  5. #5
    Membre actif Avatar de Korri
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 158
    Points : 232
    Points
    232
    Par défaut
    Bonsoir,

    Tu a plusieurs solutions, soit tu met le noir par défaut ou tu le supprime complètement, sinon il te faudra utiliser DOM ou autre parseur pour vérifier balise après balise de quel couleur est affiché le texte.

    Par contre le regex donné ci-dessus te sortiras toutes les couleurs, backgrounds compris, Donc si possible tu devrais écouter Zipette et utiliser du javascript, sinon bon courage (il te faudrait aussi charger les fichiers css externes etc, autant dire un travail de Titan).

    bon courrage et bonne nuit !
    • Quand la discutions est terminée, cliquez sur , Pensez y !
    • Vous voyez un message pertinent et de qualité ? Votez pour ce message !

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Je me suis lancé dans les DOM et j'arrive presque au résultat voulu sauf encore un pb que je n'arrive pas à résoudre:
    J'ai une balise . Je souhaite tester la valeur de cette balise...
    Quand je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($domElementP -> nodeValue;<>"&nbsp;")
    sur cette balise cela me revoit "True"... Je ne comprends pas... j'ai essayé de mette
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($domElementP -> nodeValue;<>" ")
    mais sans plus de resultat.
    Une idée ?

  7. #7
    jnore
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ($domElementP -> nodeValue;<>"&nbsp;")
    Salut,

    Je ne comprends pas la syntaxe de ta condition!
    Peut-être que je ne la connais pas...Mais je pense que tu devrais retirer ton point-virgule qui est un caractère de fin d'instruction.

    Essaie ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    if ($domElementP -> nodeValue <>"&nbsp;")

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Je n'y arrive toujours pas...
    en fait je t'explique... dans mon code je teste la valeur d'un élément <p>&nbsp;</p>. J'essai de tester cette valeur en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    if ($domElementP -> nodeValue <>"&nbsp;")
    mais php me renvoi vrai ! Il semble que le teste avec le caractere &nbsp; ne fonctionne pas... faudait il ajouter un htmentities ? ou autre? Il me manque plus que ca.... quelle galere...
    Merci pour ton aide.

  9. #9
    jnore
    Invité(e)
    Par défaut
    Quand tu fais un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo $domElementP -> nodeValue;
    Qu'est -ce que cela te donne?

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    EN fait, la seule possibilité pour voir la valeur de la vaiable ..c'est de l'affiché.. le souci c'est que le navigateur la transforme en espace..donc en gros tu vois rien... si dans la source tu vois le &nsbp;...
    En fait j'ai résolu mon problème... je vire les &nsbp avant analyse DOM comme ça plus de soucis.. j'aurais du y penser avant !
    Sincèrement merci de m'avoir aiguillé sur les DOM que je ne connaissais pas... sans ça c'était mission impossible.
    MERCI !

  11. #11
    jnore
    Invité(e)
    Par défaut
    Un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ($domElementP -> nodeValue <> html_entity_decode("&nbsp;"))
    aurait, je pense, pu faire l'affaire!

  12. #12
    jnore
    Invité(e)
    Par défaut
    Ou plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    if (htmlentities(domElementP -> nodeValue) <> "&nbsp;")

Discussions similaires

  1. supprimer toutes les balises d'un code html (regex?)
    Par le y@m's dans le forum Langage
    Réponses: 5
    Dernier message: 21/01/2014, 10h08
  2. Réponses: 4
    Dernier message: 07/07/2006, 12h41
  3. Formatter du html en supportant tout les codages
    Par shinux2004 dans le forum Web
    Réponses: 2
    Dernier message: 26/07/2005, 17h27
  4. Réponses: 2
    Dernier message: 17/06/2005, 23h03
  5. Réponses: 8
    Dernier message: 17/10/2002, 12h52

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