Hi Justin: On Fri, Jul 19, 2002 at 01:50:08PM +1000, Justin French wrote: > > 1. look for a given tag eg DIV > 2. capture the tag (everything from '<DIV' up to the '>') > 3. look for a given attribute (eg ID="foo", ID=foo, ID='foo' -- all valid > ways) > 4. capture it > 5. be given the opportunity to manipulate the attribute's value, delete it, > etc > 6. place captured tag (complete with modifed elements) back into the string > in it's original position > 7. return to step 1, looking for the next occurence of a DIV tag
This can be done with preg_replace() and a function. Here are some variations on such an expression / function combo. <?php $Val = 'begin <div> middle <div id="idattr"> end'; function alter($var) { return "_$var" . '_'; } # To grab all attributes... $Out = preg_replace('/((<div)([^>]*))/i', '\\2' . alter("\\3"), $Val); # \\1 contains whole match # \\2 contains tag type # \\3 contains attributes echo htmlspecialchars($Out); echo '<hr />'; # To grab just the id attribute... $Out = preg_replace('/((<div) ?(id=(?:"|\')([^\'"]*)(?:"|\'))*)/i', '\\2' . alter("\\4"), $Val); # \\2 contains tag type # \\3 contains whole id attribute statement # \\4 contains the attribute value echo htmlspecialchars($Out); ?> Of course, be a good hacker and modify it to suit your actual needs. :) Enjoy, --Dan -- PHP classes that make web design easier SQL Solution | Layout Solution | Form Solution sqlsolution.info | layoutsolution.info | formsolution.info T H E A N A L Y S I S A N D S O L U T I O N S C O M P A N Y 4015 7 Av #4AJ, Brooklyn NY v: 718-854-0335 f: 718-854-0409 -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php