Forum-webmaster
Technique - programmation => HTML / CSS / XHTML => Message commencé par: JeDoute le le 20-05-2012 a 16:20:22

Titre: Cherche outil de réécriture code source de mes balises <a> externes
Posté par: JeDoute le le 20-05-2012 a 16:20:22

Bonjour,

Je souhaiterais ré-écrire mes balises link (<a></a>), lorsqu'il s'agit de liens externes à mon site.

Précisément, je souhaiterais que tous les liens pointant vers l'extérieur aient une classe particulière. Comme il y en a beaucoup, je cherche un petit outil qui, s'il existe, soit capable de balayer le code source, en mode local, de toutes mes pages et de réécrire ces balises en y ajoutant cette classe.

Que tous les liens contenant une adresse avec http ou https, par exemple
<a title="Sujet" href="http://ici.com/sujet.html">Sujet</a>

devienne
<a class="external" title="Sujet" href="http://ici.com/sujet.html">Sujet</a>

Si un tel petit outil n'existe pas, il faudra y aller à la main, un par un, ce qui risque d'être long et sujet à des loupés.

Merci

Titre: Re:Cherche outil de réécriture code source de mes balises <a> externes
Posté par: dandreaweb le le 20-05-2012 a 17:32:44

bonjour,
avec Notepad++ vous pouvez le faire il suffit d'aller dans : recherche -> rechercher -> remplacer. Là vous avez 2 champs l'un pour rechercher et l'autre pour remplacer. Une fois que vous avez rempli les champs désirés, vous cliquez sur remplacer tout.
a+

Titre: Re:Cherche outil de réécriture code source de mes balises <a> externes
Posté par: JeDoute le le 21-05-2012 a 01:35:56

Bonsoir dandreaweb

Merci pour la suggestion mais je ne vois pas comment faire une recherche / remplacement conditionnelle, la condition étant que le lien dans la balise <a> commence par http:// ou https://
Tous les autres liens doivent rester inchangés

Il y en a plusieurs centaines, probablement plus encore, tous différents, pointant vers des centaines de liens profonds sur ces centaines de sites différents (tous les "title" sont différents, tous les "href" sont différents, tous les "textes" des liens sont différents.

Mais il y a tellement d'options dans la fonction recherche/remplacement dans "find in files" que je loupe peut-être quelque chose... Les expressions régulières permettent des "if" ?

Merci

Titre: Re:Cherche outil de réécriture code source de mes balises <a> externes
Posté par: vieactu le le 22-05-2012 a 12:28:55

Quel est ton but en l’occurrence ? Beaucoup de boulot pour pas grand chose...

Titre: Re:Cherche outil de réécriture code source de mes balises <a> externes
Posté par: JeDoute le le 25-05-2012 a 11:27:35

Bonjour,

C'est très simple :

  • Tous les liens internes à mon site (tous les liens sur mes pages qui pointent sur d'autres de mes pages, à l'intérieur de mon site) s'ouvrent dans top avec une class.

  • Tous les liens externes à mon site (tous les liens sur mes pages qui pointent vers des sites externes à mon site (ou des liens profonds vers des pages de ces sites externes) s'ouvrent dans blank avec une autre class.


  • Comme j'ai fais une boulette et que, pour l'instant, tous les liens ont la même tête, je cherche un outil qui m'éviterait de faire ce boulot à la main.

    Merci

Titre: Re:Cherche outil de réécriture code source de mes balises <a> externes
Posté par: Franck K le le 25-05-2012 a 13:43:42

dandreaweb a raison. Voici comment tu peux faire :


Dans le champs recherche tu tapes href="http
Danns le champs remplacer tu tapes class="myClass" href="http

Tu saisis ? Cela rajoutera class="myClass" devant l'attribut href si celui ci commence par http.

A supposer que les liens n'ont déjà pas d'attribut class.

Titre: Re:Cherche outil de réécriture code source de mes balises <a> externes
Posté par: JeDoute le le 25-05-2012 a 15:43:58

Bonjour,

Et oui... Si cela était si facile...

Mais je suis ce ceux qui renseignent l'attribut "title" qui se trouve entre l'ouverture la balise <a> et l'attribut "href".

Évidemment, il n'y a pas deux attributs "title" identiques.

Le principe des recherches/remplacements conditionnelles (dans le cas qui m'intéresse immédiatement - la balise <a> - il faudrait ensuite le généraliser à d'autres balises et, peut-être, à d'autres langages de balises comme xml) serait :

Par exemple dans un onglet appelé "html"
Paramètre : ignorer la case (majuscules / minuscules) - Oui/Non
Paramètre : jeu de caractères (encodage) - dans une liste (unicode, iso-8859-1, windows-1252, x-mac-roman etc. ...)
Paramètres : rech/remp 1er uniquement, nombre d'occurences, tous, aucun (montrer seulement), soumettre un par un
Paramètre : répertoire de départ
Paramètre : page unique (nom de fichier) ou toutes les pages
Paramètre : inclure les sous-répertoires
Paramètre : ne traiter que les fichiers en (liste) .htm, .html, .php...

Recherches et remplacements à doubles conditions

[Recherches/Remplacements conditionnels - Condition 1]
Si Condition 1 vraie : (= ou <> ou > ou < ou <= ou >= ou Commence par ou contient ou Ne contient pas ou Se termine par)
Chaîne de caractères : aaaaaaaaaaa

dans mon cas on repère une balise <a> :
Condition "Commence par"
Chaîne de caractères "<a "


[Isoler le champ sur lequel on va travailler - chercher la balise de fermeture]
Chercher balise de fermeture "</a>".
Divers tests histoire d'éviter les erreurs de syntaxe et de circonscrire le travail à la balise elle-même et s'assurer que le code est bien un langage de balises).
Prévoir les cas d'erreur de syntaxe (pas de balise de fermeture donc on ne sait pas sur quoi on travaille...).
Exemple de balise de test, horrible mais syntaxiquement correcte, sur plusieurs lignes, avec des espaces aléatoires et un texte pouvant être confondu avec la balise de fermeture etc. ... - c'est un vrai piège ! Normalement on ne devrait jamais trouver un attribut "title" comme celui qui suit, mais les webmasters sont tellement "distraits" en écrivant avec les pieds !

<!-- balise de test -->
<a title = "</a> "guillemets""
href = "parla.html"
   target="_top">test<br>
suite<br>
ligne 3</a>

<!-- réécriture du code source -->
Depuis "<a " jusqu'à "</a>", dans un buffer, en supprimant les retours chariot et les espaces multiples, histoire de travailler dans un environnement syntaxiquement propre.

Donnerait, pour la balise de test ci-dessus :
<a title="&lt;/a&gt; &quot;guillemets&quot;" href="parla.html" target="_top">test<br>suite<br>ligne 3</a>

[Recherches/Remplacements conditionnels - Condition 2]
Si Condition 2 vraie : (= ou <> ou > ou < ou <= ou >= ou Commence par ou contient ou Ne contient pas ou Se termine par)
Chaîne de caractères : aaaaaaaaaaa

dans mon cas on repère une balise <a> qui n'est pas déjà classieuse :
Condition "<>"
Chaîne de caractères "<a class=""


[Recherches/Remplacements conditionnels - Condition 3]
Si Condition 3 vraie : (= ou <> ou > ou < ou <= ou >= ou Commence par ou contient ou Ne contient pas ou Se termine par)
Chaîne de caractères : aaaaaaaaaaa

dans mon cas on repère un attribut href externe avec :
Condition "Contient"
Chaîne de caractères "href="http"


[Alors, exécuter la fonction Recherches/Remplacements]

recherche chaîne de caractères a
remplace par chaîne de caractères b

dans mon cas, ce serait :
Chaîne de caractères a : "<a "
Chaîne de caractères b : "<a class="external" "


ré-écrire le code source de la page

fin fonction rechercher / remplacer

sinon fin condition 3

sinon fin condition 2

sinon fin condition 1

Itérer dans la page jusqu'à sa fin

Ecrire la page

Soritr

__________________________
ps
Des trucs en plus à vérifier comme la longueur, en nombre de caractères, du texte du lien histoire de ne pas se trouver devant un buffer overflow etc. ...

Convertir les "chaîne de caractères" saisie dans le jeu de caractères interne puisque l'on travaille en code source - assez délicat à faire car il faut distinguer automatiquement ce qui relève du code de ce qui relève du texte - ici, par exemple, href="http doit rester "href="http" et ne pas être converti en "href=&quot;http". Ceci peut sans doute être laissé à l'appréciation de l'utilisateur dans sa zone de saisie, avec une case à cocher)


Je livre l'aspirine avec ! ;)

Merci

Titre: Re:Cherche outil de réécriture code source de mes balises <a> externes
Posté par: Franck K le le 25-05-2012 a 16:35:13

Dit moi juste 2 choses :

- Tes balises <a> ont elles déjà une classe attribuée ?
- Est ce que la seule chose que tu cherches à faire c'est d'ajouter une classe pour les <a> dont le href commence par "http" ?

Si les réponses sont non/oui ma solution marche toujours (qu'il y ai des attributs title ou non...)

Si les réponses sont oui/oui, il va te falloir parser chaque fichier avec un script un peu plus complexe que ça.


Titre: Re:Cherche outil de réécriture code source de mes balises <a> externes
Posté par: JeDoute le le 25-05-2012 a 16:53:55

Re, re, re, et areeeuh,

Peut être (sûrement) que je loupe quelque chose avec notepad++.

Allons-y : comment fais-je avec ça ?

<br>
<br>
<a title="Allez voir ce que j'en dis page 1" href="page_1_surlesite.html" target="_top">Lien interne 1</a><br>
<a title="Et &ccedil;a, je l'ai d&eacute;velopp&eacute; ici" href="page_2_surlesite.html" target="_top">Lien interne 2</a><br>
<a title="Lui, il en parle bien - Allez voir" href="https://sisite.org/page_x_ailleurs.html" target="_blank">Lien externe 1</a><br>
<a title="En savoir plus" href="http://site.com/page_y_ailleurs.html" target="_blank">Lien externe 2</a><br>
<a class="internal" title="Plein d'images sur la page 3" href="page_3_surlesite.html" target="_top">Lien interne 3 classieux</a><br>
<a class="external" title="Que c'est b&ocirc; !" href="http://tresbosite.com/page_z_ailleurs.html" target="_blank">Lien externe 3 classieux</a><br>
<br>
<br>

Et encore, là, le code est correctement écrit (mais c'est le cas pour mon écriture (Adobe Golive CS2)

Merci

Titre: Re:Cherche outil de réécriture code source de mes balises <a> externes
Posté par: Franck K le le 25-05-2012 a 17:15:25

Tu as déjà une classe external, je suppose que c'est cette classe que tu veux ajouter et donc on part du principe ou elles n'existent pas encore.

Tu fais un rechercher / remplacer.

Expression à rechercher : href="http
à remplacer par : class="external" href="http

Dit moi si tu obtiens ce que tu veux.

Titre: Re:Cherche outil de réécriture code source de mes balises <a> externes
Posté par: JeDoute le le 25-05-2012 a 17:22:56

Re Frank,

N'est pas idiot du tout ce que tu dis ! C'est même génial !

Pourquoi je cherche absolument à mettre la classe juste après la balise d'ouverture ?

Pourquoi faire simple quand on peut faire compliqué ?

Comment n'y ais-je pas pensé ???

J'y vais de ce pas !

Je te tiens informé.

@+

Titre: Re:Cherche outil de réécriture code source de mes balises <a> externes
Posté par: JeDoute le le 25-05-2012 a 17:39:22

Et, en plus, cela fonctionne parfaitement !

C'est vexant !

Le risque de doublons, pour les quelques liens que j'avais commencé à retoucher manuellement, est géré par la fonction d'analyse syntaxique du code.

Super.

Merci

Titre: Re:Cherche outil de réécriture code source de mes balises <a> externes
Posté par: Franck K le le 25-05-2012 a 19:40:40

de rien :)


Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.