<?php
$html = "<div id='gallery-7222-1' class='gallery galleryid-7222 gallery-columns-3 gallery-size-thumbnail'>";
// grab all containers from the HTML.
$dom_doc = new DOMDocument();
/*
* $html here can be the example I posted above.
* LIBXML_HTML_NOIMPLIED and LIBXML_HTML_NODEFDTD are used
* to avoid adding a doctype and wrapping the whole output in HTML tags.
*/
$dom_doc->loadHTML( $html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD );
// Let's look for lists and divs.
$ul_tags = $dom_doc->getElementsByTagName( 'ul' );
$div_tags = $dom_doc->getElementsByTagName( 'div' );
/*
* Loop through each ul, and add the data.
* I do more things in there, like checking for what class the ul has,
* but I've simplified things here.
*/
foreach ( $ul_tags as $ul_tag ) {
$ul_tag->setAttribute( 'data-foo', 'bar' );
}
/*
* Loop through each div, and add the data.
* I do more things in there, like checking for what class the div has,
* but I've simplified things here.
*/
foreach ( $div_tags as $div_tag ) {
$div_tag->setAttribute( 'data-foo', 'bar' );
}
// Save our updated HTML.
$html = $dom_doc->saveHTML();
// Let's see it here.
PD9waHAKCiRodG1sID0gIjxkaXYgaWQ9J2dhbGxlcnktNzIyMi0xJyBjbGFzcz0nZ2FsbGVyeSBnYWxsZXJ5aWQtNzIyMiBnYWxsZXJ5LWNvbHVtbnMtMyBnYWxsZXJ5LXNpemUtdGh1bWJuYWlsJz4iOwoKLy8gZ3JhYiBhbGwgY29udGFpbmVycyBmcm9tIHRoZSBIVE1MLgokZG9tX2RvYyA9IG5ldyBET01Eb2N1bWVudCgpOwoKLyoKICogJGh0bWwgaGVyZSBjYW4gYmUgdGhlIGV4YW1wbGUgSSBwb3N0ZWQgYWJvdmUuCiAqIExJQlhNTF9IVE1MX05PSU1QTElFRCBhbmQgTElCWE1MX0hUTUxfTk9ERUZEVEQgYXJlIHVzZWQKICogdG8gYXZvaWQgYWRkaW5nIGEgZG9jdHlwZSBhbmQgd3JhcHBpbmcgdGhlIHdob2xlIG91dHB1dCBpbiBIVE1MIHRhZ3MuCiAqLwokZG9tX2RvYy0+bG9hZEhUTUwoICRodG1sLCBMSUJYTUxfSFRNTF9OT0lNUExJRUQgfCBMSUJYTUxfSFRNTF9OT0RFRkRURCApOwoKLy8gTGV0J3MgbG9vayBmb3IgbGlzdHMgYW5kIGRpdnMuCiR1bF90YWdzICA9ICRkb21fZG9jLT5nZXRFbGVtZW50c0J5VGFnTmFtZSggJ3VsJyApOwokZGl2X3RhZ3MgPSAkZG9tX2RvYy0+Z2V0RWxlbWVudHNCeVRhZ05hbWUoICdkaXYnICk7CgovKgogKiBMb29wIHRocm91Z2ggZWFjaCB1bCwgYW5kIGFkZCB0aGUgZGF0YS4KICogSSBkbyBtb3JlIHRoaW5ncyBpbiB0aGVyZSwgbGlrZSBjaGVja2luZyBmb3Igd2hhdCBjbGFzcyB0aGUgdWwgaGFzLAogKiBidXQgSSd2ZSBzaW1wbGlmaWVkIHRoaW5ncyBoZXJlLiAKICovCmZvcmVhY2ggKCAkdWxfdGFncyBhcyAkdWxfdGFnICkgewogICAgJHVsX3RhZy0+c2V0QXR0cmlidXRlKCAnZGF0YS1mb28nLCAnYmFyJyApOwp9CgovKgogKiBMb29wIHRocm91Z2ggZWFjaCBkaXYsIGFuZCBhZGQgdGhlIGRhdGEuCiAqIEkgZG8gbW9yZSB0aGluZ3MgaW4gdGhlcmUsIGxpa2UgY2hlY2tpbmcgZm9yIHdoYXQgY2xhc3MgdGhlIGRpdiBoYXMsCiAqIGJ1dCBJJ3ZlIHNpbXBsaWZpZWQgdGhpbmdzIGhlcmUuIAogKi8KZm9yZWFjaCAoICRkaXZfdGFncyBhcyAkZGl2X3RhZyApIHsKCSRkaXZfdGFnLT5zZXRBdHRyaWJ1dGUoICdkYXRhLWZvbycsICdiYXInICk7CQp9CgovLyBTYXZlIG91ciB1cGRhdGVkIEhUTUwuCiRodG1sID0gJGRvbV9kb2MtPnNhdmVIVE1MKCk7CgovLyBMZXQncyBzZWUgaXQgaGVyZS4KdmFyX2R1bXAoICRodG1sICk7