Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Function to fix video objects embedding HTML code in Wordpress.
- * This function uses DOM traversal to rebuild the <object> tag of the
- * video files in an XHTML valid format.
- *
- * Article: HOW TO: Build a XHTML Valid Wordpress Blog with DISQUS Plugin
- * URL: http://blog.thoughtpick.com/2009/10/how-to-build-xhtml-valid-wordpress.html
- *
- * @author: Amer Kawar
- */
- function fixVideoObjects($content) {
- // input the regex pattern to match <object *</object> tags
- $pattern = '/<object [a-z0-9\/\- \.=_#:,"\?\'><&;]*<\/object>/i';
- // use preg_match_all to fill $m array with all <object> fields found
- $m = array();
- preg_match_all($pattern, $content, $m);
- // for each match in $m loop and replace the object only if
- // it has the embed tag
- if ( isset($m[0]) && count($m[0]) > 0 ) {
- for ($i = 0 ; $i < count($m[0]); $i++) {
- if (isset($m[0][$i])) {
- $doc = new DOMDocument();
- $doc->loadHTML($m[0][$i]);
- $o = $doc->getElementsByTagName('object');
- if ( !is_null($o->item(0)) ) {
- $embed_tag = $o->item(0)->getElementsByTagName('embed');
- if (!is_null($embed_tag->item(0))) {
- $src = $embed_tag->item(0)->getAttribute('src');
- // get the w x h, if they are null from the <object> tag, get them from
- // the <embed> tag
- $w = $o->item(0)->getAttribute('width');
- $h = $o->item(0)->getAttribute('height');
- if (is_null($w)) $w = $embed_tag->item(0)->getAttribute('width');
- if (is_null($h)) $h = $embed_tag->item(0)->getAttribute('height');
- $out = '<object type="application/x-shockwave-flash" '
- .'style="width:'.$w.'px; '
- .'height:'.$h.'px;" data="'.str_replace('&','&',$src).'">';
- // find all param tags and re-echo them in XHTML 1.0 format
- $params = $o->item(0)->getElementsByTagName('param');
- foreach ($params as $p) {
- if (!is_null($p->getAttribute('name')) && !is_null($p->getAttribute('value'))) {
- $n = $p->getAttribute('name');
- $v = $p->getAttribute('value');
- $out .= '<param name="'.$n.'" value="'.str_replace('&','&',$v).'" />';
- }
- }
- $out .= '</object>';
- // replace object found by the re-written object
- $content = str_replace($m[0][$i], $out, $content);
- }
- }
- }
- }
- }
- return $content;
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement