Ancrage automatique des titres
Résolu
Danieldes
-
Danieldes -
Danieldes -
Bonjour,
Afin de pouvoir générer facilement un sommaire, j'ai besoin d'ancrer les titres de mes pages web. Ne pouvant le faire manuellement, je cherche à le faire dans un programme php, quelque chose comme :
Où numéro serait un chrono qui changerait pour chaque titre (001, 002, 003, 004... 999)
Pour, partant de là :
obtenir quelque chose comme :
J'ai consulté la doc des regex mais j'ai bien peur que ce ne soit pas possible de faire ça dans une regex.
Quelqu'un a-t-il une idée ?
Vous en remerciant par avance
Cordialement
Afin de pouvoir générer facilement un sommaire, j'ai besoin d'ancrer les titres de mes pages web. Ne pouvant le faire manuellement, je cherche à le faire dans un programme php, quelque chose comme :
$texte = preg_replace('<(h[1-6])>(.*?)</\1>#i', '<$1 id=\'numéro\'>$2</$1>', $texte);
Où numéro serait un chrono qui changerait pour chaque titre (001, 002, 003, 004... 999)
Pour, partant de là :
<h1>Titre principal</h1> <h2>Premier chapitre</h2> <h3>Sous-chapitre</h3> <h3>Sous-chapitre</h3> <h2>Second chapitre</h2> <h3>Sous-chapitre</h3> <h2>Troisième chapitre</h2> <h2>Quatrième chapitre</h2>
obtenir quelque chose comme :
<h1 id='001'>Titre principal</h1> <h2 id='002'>Premier chapitre</h2> <h3 id='003'>Sous-chapitre</h3> <h3 id='004'>Sous-chapitre</h3> <h2 id='005'>Second chapitre</h2> <h3 id='006'>Sous-chapitre</h3> <h2 id='007'>Troisième chapitre</h2> <h2 id='008'>Quatrième chapitre</h2>
J'ai consulté la doc des regex mais j'ai bien peur que ce ne soit pas possible de faire ça dans une regex.
Quelqu'un a-t-il une idée ?
Vous en remerciant par avance
Cordialement
A voir également:
- Ancrage automatique des titres
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Réponse automatique thunderbird - Guide
- Logiciel de sauvegarde automatique gratuit - Guide
- Appliquez à tous les paragraphes du document à télécharger, à l’exception des titres et des sous-titres, la mise en forme suivante : - Guide
- Table des matières automatique word - Guide
4 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
pourquoi ne peux-tu pas le faire manuellement?
ces pages web sont-elle générées pas du php?
comment obtiens-tu ce dont tu pars?
pourquoi ne peux-tu pas le faire manuellement?
ces pages web sont-elle générées pas du php?
comment obtiens-tu ce dont tu pars?
Bonjour,
Merci pour ta réponse.
Mais ce sont des pages pour lesquelles on me demande de rajouter des sommaires et des tables des matières et il y en a pas mal. Donc pas possible de faire ça manuellement
Cordialement
Merci pour ta réponse.
Mais ce sont des pages pour lesquelles on me demande de rajouter des sommaires et des tables des matières et il y en a pas mal. Donc pas possible de faire ça manuellement
Cordialement
Bonjour,
Perso... moi je le ferai en javascript...
Une fois la page "générée" .. il est assez facile de parcourir chaque <h*> pour créer un sommaire...
Perso... moi je le ferai en javascript...
Une fois la page "générée" .. il est assez facile de parcourir chaque <h*> pour créer un sommaire...
Bonjour Jordane,
Oui, pourquoi pas, sauf que dans mon cas d'utilisation ces sommaires vont également permettre d'alimenter une base de données pour pouvoir faire des recherches rapides sur l'ensemble des pages.
Par conséquent cela doit être fait côté serveur.
Mais à nouveau en cherchant dans la doc php, je pense avoir trouvé. Il faut utiliser preg_replace_callback
Où ancrage est simplement une fonction à définir avant l'appel. La fonction ancrage récupère le pattern trouvé et peut le modifier à sa guise ces données, ce qui résout ma problématique
Merci pour vos suggestions.
Je peux clôturer le sujet.
Oui, pourquoi pas, sauf que dans mon cas d'utilisation ces sommaires vont également permettre d'alimenter une base de données pour pouvoir faire des recherches rapides sur l'ensemble des pages.
Par conséquent cela doit être fait côté serveur.
Mais à nouveau en cherchant dans la doc php, je pense avoir trouvé. Il faut utiliser preg_replace_callback
$texte = preg_replace_callback('<(h[1-6])>(.*?)</\1>#i', 'ancrage', $texte);
Où ancrage est simplement une fonction à définir avant l'appel. La fonction ancrage récupère le pattern trouvé et peut le modifier à sa guise ces données, ce qui résout ma problématique
Merci pour vos suggestions.
Je peux clôturer le sujet.