...

View Full Version : preg_replace that ignores content inside a, img and other specified tags



adrianbj
12-07-2010, 07:24 AM
I am creating automated mouseover tooltips for definitions of words in a glossary database. The problem is that I can't figure out how to not replace the word when it appears in hyperlinks, img and various heading tags.

I have populated an array with all the words and their definitions - $glossary

What I have at the moment is a simple str_replace, because I actually have no idea how to start this preg_replace.


foreach($glossary as $glossary_word => $glossary_definition){
$content = str_replace($glossary_word,'<a href="javascript:;" style="cursor:help;color:#BF601A;" onmouseover="Tip(\''.$glossary_definition.'\')" onmouseout="UnTip()">'.$glossary_word.'</a>',$content);
}


Would be great if I could populate an array of tags that would be ignored when doing the replace ie:
$tags_to_ignore = array('a','img','h1','h2','h3',etc) and somehow include this in the preg_replace.

What this would mean is that the function would only add the tooltip to occurrences of the word not in these specified tags.


Thanks for any thoughts on this.

adrianbj
12-16-2010, 09:06 AM
anyone?

I was also thinking about a way to ignore tags using dom somehow, but can't quite put anything together

adrianbj
12-16-2010, 10:12 AM
This is pretty close:

http://web.archive.org/web/20080312155845/http://tagarga.com/blok/on/080307

works for inside tags. but not within h1 etc tags - should be able to tweak it though.



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum