[Plugin: jQuery Colorbox] Rewriting addColorboxGroupIdToImages to use HTML parser
-
I noticed in this function, the comment
* ugly way to make the images Colorbox-ready by adding the necessary CSS class. * unfortunately, WordPress does not offer a convenient way to get certain elements from the_content, * so I had to do this by regexp replacement...
While this works fine, the best way to do this would be using an XML parser such as PHP’s DomDocument. Regex is a little less reliable and perhaps less performant (though I haven’t tested it in this case).
I rewrote as this
function addColorboxGroupIdToImages($content) {//WARNING: this version has causes UTF8 problems global $post; $doc=new DomDocument(); @$doc->loadHTML($content);//remove the @ if showing HTML parsing errors to users is desired $imgs=$doc->getElementsByTagname('img'); if ($imgs->length) { $image_count=$imgs->length; for ($i=0;$i<$image_count;$i++) { $image=$imgs->item($i); // only work on imgTags that do not already contain the String "colorbox-" $class=$image->getAttribute('class'); if($class=='' || strpos('colorbox-',$class)===false) { $image->setAttribute('class',$class.' colorbox-'. $post->ID); } } return $doc->saveHTML(); } return $content; }
but there’s one problem –
DomDocument->saveHTML()
appears to garble text encoding in some cases. I think this could be resolved by setting the encoding for the document, but I haven’t had a chance to do that. For now just went back to the regex version.Another option would be to use a library like phpQuery, though including an external library probably isn’t desirable.
- The topic ‘[Plugin: jQuery Colorbox] Rewriting addColorboxGroupIdToImages to use HTML parser’ is closed to new replies.