I'm not familiar with Regular Expression and so I'm having trouble with the function, preg_replace_callback. $str = preg_replace_callback("#<li.*?</li>#si", 'plgSystemEventTriggers::_replacer', $article->text); I've acquired the expression above from some source code only to find that this expression merely returns the first instance of the HTML List element, <li.../li>. I need it to do a little more than that. Below is a snippet of html code I grabbed it off someplace. See the character, ¥? I just put that symbol in the html as an example. What I want to parse out using preg_replace_callback would be the second list element, <li.../li>, that contains that character, ¥. Once implemented, I want every list element with that character symbol parsed out and directed to preg_replace_callback's callback function. HTML Code: <li id="geshi-8990-14:7c990dbf0d59ccf1fab466aa3294f93c"> <div><span style="color: rgb(128, 128, 128); font-style: italic;">// Set flag that this is a parent file</span></div> </li> <li id="geshi-8990-15:1933248fa86e78583ece907ebc2980c0"> <div> <a href="http://www.php.net/define"><span style="color: rgb(0, 0, 102);">define</span></a><span style="color: rgb(102, 204, 102);">(</span> <span style="color: rgb(255, 0, 0);">'_JEXEC'</span>, <span style="color: rgb(204, 102, 204);">1</span> <span style="color: rgb(102, 204, 102);">)</span>;¥</div> </li> Please, would you provide me with the proper regex to do just that? Below are only two of many efforts made to get this to work. They don't work....don't grab anything, and I don't know why: "#<li(.*)?>.*¥.*</li>#si" "#<li[^>]*>[^<li]*¥[^<li]*</li>#" Cheers.