Implement %HTML.AllowedComments and %HTML.AllowedCommentsRegexp
[htmlpurifier.git] / library / HTMLPurifier / Filter / YouTube.php
blob23df221eaa3cb27690456afb187094eb84381a4a
1 <?php
3 class HTMLPurifier_Filter_YouTube extends HTMLPurifier_Filter
6 public $name = 'YouTube';
8 public function preFilter($html, $config, $context) {
9 $pre_regex = '#<object[^>]+>.+?'.
10 'http://www.youtube.com/((?:v|cp)/[A-Za-z0-9\-_=]+).+?</object>#s';
11 $pre_replace = '<span class="youtube-embed">\1</span>';
12 return preg_replace($pre_regex, $pre_replace, $html);
15 public function postFilter($html, $config, $context) {
16 $post_regex = '#<span class="youtube-embed">((?:v|cp)/[A-Za-z0-9\-_=]+)</span>#';
17 return preg_replace_callback($post_regex, array($this, 'postFilterCallback'), $html);
20 protected function armorUrl($url) {
21 return str_replace('--', '-&#45;', $url);
24 protected function postFilterCallback($matches) {
25 $url = $this->armorUrl($matches[1]);
26 return '<object width="425" height="350" type="application/x-shockwave-flash" '.
27 'data="http://www.youtube.com/'.$url.'">'.
28 '<param name="movie" value="http://www.youtube.com/'.$url.'"></param>'.
29 '<!--[if IE]>'.
30 '<embed src="http://www.youtube.com/'.$url.'"'.
31 'type="application/x-shockwave-flash"'.
32 'wmode="transparent" width="425" height="350" />'.
33 '<![endif]-->'.
34 '</object>';
39 // vim: et sw=4 sts=4