Oui mais, le seul souci c'est que ça me casse le code à l'intérieur des
liens interactifs puisque ça ajoute le span class. Du style :
<a href="http://www.<span class="highlight">trucmuche</span>.com">mon
lien</a>
Comment dire $Contenu = eregi_replace sauf là où c'est encadré par <a
href et le > suivant ?...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Mickael Wolff
C'est possible ça ? Merci pour l'aide
Attention, la solution que je vais te proposer est très bourrin, ça peut éventuellement consommer beaucoup de mémoire. L'astuce consisterait à utiliser un parser de HTML/XML : DOMDocument <http://fr2.php.net/manual/fr/ref.dom.php> avec DOMXpath <http://fr2.php.net/manual/fr/function.dom-domxpath-construct.php>, puis en traitant les résultant de la requête avec preg_match.
Par exemple, pas testé et fait de tête (j'vais pas tout faire non plus :p) :
foreach($finder as $textNode) { // L'expression régulière ci-dessous ne détectera que la première occurrence du mot $word. if(preg_match('`^(.*)b('.$word.')b(.*)$`', $textNode.value, $matches)) { $hlSpan = $doc->createElement('span', $word) ; $hlSpan->setAttribute('class', 'highlight') ;
Les remarques sur ma façon de coder sont les bienvenues, ou sur des erreurs aussi.
Bon début de semaine à tous ! -- Mickaël Wolff aka Lupus Michaelis http://lupusmic.org
C'est possible ça ?
Merci pour l'aide
Attention, la solution que je vais te proposer est très bourrin, ça
peut éventuellement consommer beaucoup de mémoire. L'astuce consisterait
à utiliser un parser de HTML/XML : DOMDocument
<http://fr2.php.net/manual/fr/ref.dom.php> avec DOMXpath
<http://fr2.php.net/manual/fr/function.dom-domxpath-construct.php>, puis
en traitant les résultant de la requête avec preg_match.
Par exemple, pas testé et fait de tête (j'vais pas tout faire non plus
:p) :
foreach($finder as $textNode)
{
// L'expression régulière ci-dessous ne détectera que la première
occurrence du mot $word.
if(preg_match('`^(.*)b('.$word.')b(.*)$`', $textNode.value, $matches))
{
$hlSpan = $doc->createElement('span', $word) ;
$hlSpan->setAttribute('class', 'highlight') ;
Attention, la solution que je vais te proposer est très bourrin, ça peut éventuellement consommer beaucoup de mémoire. L'astuce consisterait à utiliser un parser de HTML/XML : DOMDocument <http://fr2.php.net/manual/fr/ref.dom.php> avec DOMXpath <http://fr2.php.net/manual/fr/function.dom-domxpath-construct.php>, puis en traitant les résultant de la requête avec preg_match.
Par exemple, pas testé et fait de tête (j'vais pas tout faire non plus :p) :
foreach($finder as $textNode) { // L'expression régulière ci-dessous ne détectera que la première occurrence du mot $word. if(preg_match('`^(.*)b('.$word.')b(.*)$`', $textNode.value, $matches)) { $hlSpan = $doc->createElement('span', $word) ; $hlSpan->setAttribute('class', 'highlight') ;