]> git.wh0rd.org - tt-rss.git/blob - lib/htmlpurifier/library/HTMLPurifier/Filter/YouTube.php
23df221eaa3cb27690456afb187094eb84381a4a
[tt-rss.git] / lib / htmlpurifier / library / HTMLPurifier / Filter / YouTube.php
1 <?php
2
3 class HTMLPurifier_Filter_YouTube extends HTMLPurifier_Filter
4 {
5
6 public $name = 'YouTube';
7
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);
13 }
14
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);
18 }
19
20 protected function armorUrl($url) {
21 return str_replace('--', '-&#45;', $url);
22 }
23
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>';
35
36 }
37 }
38
39 // vim: et sw=4 sts=4