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

HTML Discussion :

Caractères particuliers <> HTML


Sujet :

HTML

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 246
    Points : 67
    Points
    67
    Par défaut Caractères particuliers <> HTML
    Bonjour les amis,
    Je suis gêné de poser cette question mais comme je n'ai pas encore trouvé de solution simple ou logique je la pose quand même.
    M'étant fait un programme de déchiffrage de code HTML dans une application en Realbasic (Xojo).
    J'isole chaque balise etc et puis je prends le code source d'une grosse page internet pour tester.
    Et paf dans un des textes il y a un caractère > (supérieur à 0 dans le texte).
    Du coup ça fait foirer la structure du fichier.
    Si quelqu'un pouvait me dire comment contourner ce problème, distinguer les <> des balises de ces mêmes caractères dans du texte, je lui en serais drôlement reconnaissant.
    BB

  2. #2
    Membre éclairé
    Homme Profil pro
    web a11y
    Inscrit en
    Avril 2014
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : web a11y
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2014
    Messages : 158
    Points : 718
    Points
    718
    Par défaut
    Bonjour !

    À mon humble avis, tu ne te rends pas compte que tu n'est pas au bout de tes peines.
    Ce que tu fais, c'est lire le code d'une page, l'analyser, pour en ressortir certains éléments. Pour cela, il te faut connaître la grammaire du code, du langage utilisé, et vérifier au passage que le code fourni est correct. De là, tu te fais une image de la page dans une structure que tu maîtrises, et tu extraits ce que tu veux. Tu fais comme le premier travail du compilateur, ou du navigateur web. Pour cela, il existe généralement des bibliothèques spécialisées, mais en Basic je ne sais pas.

    Gag supplémentaire, d'ailleurs relevé par un ancien stagiaire : et si ta page web comporte aussi des exemples de code mais qui eux sont affichés à l'écran. Du code affiché pour illustration, mais donc pas du code propre à la page. Et comment fait-on ? On se dit rapidement qu'on doit se tourner vers les bibliothèques désignées pour ce boulot. Cela dit, c'est un travail intéressant (tu peux faire des recherches avec "compilation" et "parsing").

    Amuses-toi bien !

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    pour répondre à la question, on le fait en respectant les règles de parsing décrites par le standard normalisé HTML5, qui sont ici : https://html.spec.whatwg.org/multipa...g.html#parsing

    "Mais c'est super compliqué !" -> oui.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 246
    Points : 67
    Points
    67
    Par défaut
    Stellar7 : je n'ai pas la prétention de réinventer l'HTML mais au départ je voulais me faire une petite application graphique genre PageMaker (s'il existe encore) afin de pouvoir maîtriser les textes et les images sur une feuille.
    Pour tester le programme je prenais des pages internet et leur code source et petit à petit j'ai pu atteindre un nombre de fonctions qui me suffisent amplement.
    Thelvin : je me suis basé sur ce genre de documents pour isoler toutes les fonctions HTML mais je n'ai pas trouvé ces fichus < et > dans du texte, je vais encore chercher même si ce n'est pas de la plus grande importance.
    C'est vrai que c'est compliqué pourtant quand on regarde une page internet il y a des textes ou des images à un certain endroit avec une action éventuelle derrière ces éléments.
    Encore merci à vous.

  5. #5
    Membre éclairé
    Homme Profil pro
    web a11y
    Inscrit en
    Avril 2014
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : web a11y
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2014
    Messages : 158
    Points : 718
    Points
    718
    Par défaut
    Il ne s'agit pas de réinventer le HTML, mais d'analyser un fichier texte qui représente un code. Et je trouve que c'est un sujet passionnant (le parsing).

    Tu as certainement pu faire des choses sympa, mais on arrive régulièrement sur des pièges que d'ailleurs les navigateurs prennent en compte, et essayent aussi de prendre en compte le fait que ce soit mal écrit. D'où la différence entre un navigateur développé par une très grosse équipe, et un lecteur d'écran pour mal/non-voyant, développé par une petite équipe, et qui doit supposer (dans un premier temps, une première version) que c'est correctement écrit.

    À un moment donné, tu en arrives à lire caractère par caractère. Tu lis le caractère "<", alors tu te dis que c'est le début d'une balise. En es-tu certain ? Mon exemple t'illustre le contraire (caractère pour marquer le début d'une balise versus caractère dans une chaîne affiché à l'écran). Non pas parce que c'est mal écrit, mais parce qu'il y a une syntaxe, une grammaire pour écrire le code. Et généralement, on décode soit en ayant à côté une déclaration des règles de grammaire que tu vérifies à la volée (et d'ailleurs, tu fais comment la différence entre HTML 5/4.1/4.0/… ? cf @Thelvin), soit en ayant fait ton propre code en se basant sur la grammaire (cette fois figée, et même question : as-tu prévu toutes les versions ?). Tiens encore : et lorsque le nom de la balise n'existe pas dans le langage HTML, mais que tu dois faire comme si c'était une div avec un nom particulier ? (regarde les codes générés par des frameworks).

    Conclusion, on arrive vite à se dire qu'il faut utiliser un truc déjà fait pour ne pas réinventer la roue. C'est ce qu'ont fait certains de mes stagiaires en langage java, en utilisant une librairie à laquelle tu donnes le code de la page, mais aussi l'adresse de la grammaire à respecter (d'ailleurs disponible en ligne), et tu finis avec des structures de données dans ta mémoire, où tu peux aller directement repêcher ce qu'il te faut. En Basic, je ne sais pas si on en trouve.

    Souhaites-tu rester en Basic ? Parce que pour manipuler les pages hors librairie spécialisée, beaucoup travaillent directement en javascript (on est déjà dans le "moule" html). Sinon, trouver s'il existe des aides pour le langage utilisé.

    Je suis d'accord sur "on voir bien que … dans le code". Ouais. Mais derrière ton œil, le cerveau fait plein de travail, lit les interlignes, fait des sous-entendus, saute sur des conclusions (parfois trop rapidement d'ailleurs, faut faire gaffe). Ton programme, lui, ne fait que ce que tu lui a dit de faire, avec les règles que tu lui a donné. Le parsing est quasiment un métier à lui tout seul, et fait partie de ces choses qui ont l'air de ne pas en avoir l'air, et c'est justement là qu'on se fait avoir… mais ça reste passionnant.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 246
    Points : 67
    Points
    67
    Par défaut
    Merci Stellar pour tes conseils et infos.
    Comme dit au départ je ne veux pas traiter l'HTML de façon exhaustive mais utiliser les fonctions de base.
    Pour ma part le plus contraignant c'est le CSS.
    Je compte rester en RealBasic (Xojo) qui m'a fait abandonner tout autre langage tant c'est pratique même si c'est moins performant en terme de vitesse.
    Je peux déjà lire les pages de Wikipedia et ça me suffit amplement.
    J'ajoute petit à petit les balises que je n'avais pas encore croisées et traite les nouvelles anomalies.

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par BBouille Voir le message
    Je compte rester en RealBasic (Xojo) qui m'a fait abandonner tout autre langage tant c'est pratique.
    Je ne connais pas, mais apparemment après la description de tes problèmes basiques c'est loin d'être pratique pour traiter des pages web. Et si tu veux monter en puissance dans les fonctionnalités web tu vas mettre à chaque fois plusieurs dizaines de fois le temps que cela te prendrais si tu utilisais un langage web, sans que ton code ne soit jamais réellement à niveau. Enfin bon c'est ton problème mais pour dire que si tu veux traiter sérieusement des pages web il faut utiliser un langage web, au moins tu apprendras des fonctionnalités qui pourront te re servir.

    Citation Envoyé par Stellar7
    Le parsing est quasiment un métier à lui tout seul, et fait partie de ces choses qui ont l'air de ne pas en avoir l'air, et c'est justement là qu'on se fait avoir… mais ça reste passionnant.
    Oui entièrement d'accord, et tu avais mis "mais ça reste passionnant" en petits caractères ce que je plussoie également. Pour dire qu'au début c'est passionnant, mais ça devient assez vite très chiant. D'ailleurs au passage la doc Mozilla mentionne maintenant comme obsolète la fonction execcommande de javascript qui était pourtant très pratique pour faire des petits wysiwyg légers. Tout ça parce qu'ils n'arrivaient pas à avoir un résultat portable entre les différents navigateurs. Enfin bon ça l'était quand même en très grande majorité (il suffisait d'éviter certaines fonctions) mais plutôt que de se prendre le chou, ils ont déclaré cette fonction obsolète -> méthode de cancre. Enfin bon c'est surtout pour dire qu'elle n'évoluera plus car cela m'étonnerait qu'ils la supprime avant très longtemps étant donné l'énorme quantité de sites qui l'utilise.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 246
    Points : 67
    Points
    67
    Par défaut
    Si ça peut intéresser quelqu'un, après avoir ramé j'ai testé cette fonction avec plusieurs codes source et ça marche pas mal, en tout cas ça ne plante pas.
    Cette fonction permet d'extraire toutes les balises d'un fichier HTML avec leur contenu. On obtient donc la hiérarchie des balises.
    Il faut faire attention à certaines balises telles que meta, link, br, ... qui n'ont pas de balises fermantes mais elles sont quand même répertoriées.
    Il faut lire ou copier tout le code source dans une seule variable String ou un MemoryBlock,...
    Code javascript : 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
    20
    21
    22
    23
    24
    25
    26
      LongTexte = Len(html)
      mCurPos = 1
      Do
        startPos = InStr( mCurPos, html, '<' )  // Position du caractère <
        if startPos < 1 Then // Si < n'existe pas c'est qu'on a du texte.
          Contenu = Mid( html, mCurPos ) 
          Exit
        else
          Contenu = Mid( html, mCurPos, startPos-mCurPos )
          if Trim(Contenu) <> '' Then
            Lignes.Append Contenu
          end if
          mCurPos = startPos
          endPos = InStr( startPos+1, html, '>' )
          if endPos < 1 Then
            endPos = startPos
          end if
          Balise = Mid( html, startPos, endPos-startPos+1 ) // La balise va de < jusqu'à >
          Lignes.Append Balise
          if mCurPos <= endPos Then
            mCurPos = endPos+1
          end if
        end if
      Loop Until mCurPos >= LongTexte
     
      Return Lignes

Discussions similaires

  1. Réponses: 14
    Dernier message: 15/06/2007, 13h59
  2. [MySQL] caractères particuliers pour la base de données
    Par samplaid dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/05/2007, 17h57
  3. Traduction des caractères accentués en entités HTML
    Par philippef dans le forum Langage
    Réponses: 1
    Dernier message: 25/11/2006, 11h31
  4. [VBS] - Caractéres Spéciaux et entités HTML
    Par RegiO dans le forum VBScript
    Réponses: 6
    Dernier message: 07/11/2006, 14h42

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