begin process at 2010 02 10 13:41:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

[Regex] Remplacer des mots qui se trouvent entre un tag HTML


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[Regex] Remplacer des mots qui se trouvent entre un tag HTML

jeudi 20 mars 2008 à 17:48:25 | [Regex] Remplacer des mots qui se trouvent entre un tag HTML

webdeb

Salut à tous,

Je suis bloqué sur une expression régulière que je n'arrive pas à trouver. Et pourtant je cherche depuis pas mal de temps. J'ai développé un système de gestion d'acronymes, abréviations et définitions de mots qui doivent être remplacés automatiquement par leur équivalence dans un contenu HTML. Globalement, je transforme l'acronyme "HTML" en '<acronym title="HyperText Markeup Language">HTML</acronym>'.

Un str_replace() ou bien un preg_replace() suffit vous allez me dire. Mais non fait. Le texte dans lequel je doit remplacer les mots est une chaine HTML. Donc le problème, c'est lorsque je trouve mon mot "HTML" dans l'attribut "title" de tel ou tel tag dans ma page. Et bien mon simple preg(str)_replace() va remplacer ce mot qui se trouve dans un attribut HTML. Et vous vous en doutez, ça explose tout le code HTML final. Ce que j'aimerai donc faire, c'est de pouvoir remplacer les mots qui se trouvent éventuellement entre les tags HTML :

(par exemple) <a href="lien" title="un titre">bla bla le_mot bla bla</a>

Mais pas si 'le_mot' se trouve dans un attribut d'un tag HTML.

Voici le motif que j'ai réalisé jusqu'à maintenant mais qui ne marche pas :(

<?php

$sLaChaine 
'Il faut <a href="#" title="truc">remplacer le_mot</a> dans cette chaine HTML 
mais ne pas remplacer <span title="Définition de le_mot">le_mot</span> quand il 
se trouve dans un attribut d\'un tag HTML'
;

$sAcronym 'le_mot';
$sDefinition'Définition de mon mot';
$texte preg_replace('`(<[a-z]+[^>]*>)?(\b'.$sAcronym.'\b)(</[a-z]+[^>]*>)?`si','<acronym title="'$sDefinition .'">'$sAcronym .'</acronym>'$sLaChaine);

?>

Je vous remercie de votre aide.

Hugo.
samedi 22 mars 2008 à 00:48:38 | Re : [Regex] Remplacer des mots qui se trouvent entre un tag HTML

DiGhan

Salut,

Il est tard mais voici une piste:

<?php

$sAcronym = 'le_mot';
$sDefinition= 'Définition de mon mot';
$sText = 'Il faut <a href="#" title="truc">remplacer le_mot</a> dans cette chaine HTML
mais ne pas remplacer <span title="Définition de le_mot">le_mot</span> quand il
se trouve dans un attribut d\'un tag HTML';

echo preg_replace('#(>.*?)('.$sAcronym.')(.*?<)#','$1<acronym title="'.$sDefinition.'">$2</acronym>$3', $sText);

?>


samedi 22 mars 2008 à 10:54:11 | Re : [Regex] Remplacer des mots qui se trouvent entre un tag HTML

webdeb

Réponse acceptée !
Bonjour,

Merci pour cette réponse mais finalement j'ai eu ma réponse sur les forums de PHPScripts-fr. J'ai écrit un tutoriel sur mon site pour présenter la réponse.

Hugo HAMON
LP Développeur d'Applications Multimédia Multisupports - Ecole Gobelins - Annecy
-------
[ Lien ][apprendre à program


Cette discussion est classée dans : tag, mot, mots, html, remplacer


Répondre à ce message

Sujets en rapport avec ce message

comment parcourir le code d'1 page html pour remplacer des zones définis [ par nakata94 ] Est ce qu'une personne pourrais m'aider, en me disant comment parcourir le code source d'1 page html pour remplacer des zones définis. Par exemple, je Help : (str_replace) et (split ou explode) ne marchent pas ! ? [ par slmnsnts ] Salut tt le monde !G ajouté une page de recherche dans mon forum et ca marche tres bien ... le seul prob C lorsque qu'on cherche des mots avec plusieu Censurer des mots dans sa page [ par tony4758 ] Bonjour je suis un débutant dans le langage php et je cherche depuis longtemps un script a mettre dans ma page permettant de transformer les mots gros decrypter mot de pass md5 [ par rich25200 ] bonjour, est ce qu'il y a un moyen de decrypter les mots de passe avec md5 ? Je vous explique j'ai un site et je rentre les mots de passes des utili Aide moteur de recherche [ par jipe32 ] bonjour, je voudrais savoir comment centrer le if ($num==0) {echo "Désolé, aucune page de ce site ne contient $mot. Veuillez relancer une nouvelle r Mots de passes temporaires [ par samraimi ] Bonjour,Je souhaiterais sécuriser une partie de mon site par mot de passe. Mais je voudrais avoir à envoyer moi-même mot de passe (jusque-là pas de pr limiter la taille d'un texte [ par joebuz ] Bonjour,pour un moteur de recherche, je cherche à couper le texte environ 5 mots avant et apres le mot recherché.pour rechercher textarea et balises html [ par David_monchy ] Salut à tous, contrairement aux autres questions du forum, qui demandent en général comment éviter que le code html soit traduit, moi je voudrais par Remplacer un mot d'une page de recherche issue d'une variable par un autre mot issu d'un variable [ par Nico52 ] BonjourJ'ai fait un moteur de recherche.Le mot recherche apparait plusieurs fois sur la page du fait de la recherche.J'ai trouvé une routine qui me pe lire un mot d'une page html [ par maximefranck ] Bonjour,j'ai un probleme je voudrai recupere un mots de la page ZZZ.htmlse fichier ce presente comme sa :.......................ligne 72 il


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,357 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales