From aea7d02dfe1535f0cd78eb4ce7eab3f2efc4ddf3 Mon Sep 17 00:00:00 2001 From: "Edward Z. Yang" Date: Sun, 7 Mar 2010 18:57:22 -0500 Subject: [PATCH] Support YouTube slideshow embedding. YouTube slideshows contain a /cp/, not a /v/, in their URL; relax the YouTube filter to allow them. Signed-off-by: Nigel McNie Signed-off-by: Edward Z. Yang --- NEWS | 1 + library/HTMLPurifier/Filter/YouTube.php | 10 +++++----- smoketests/preserveYouTube.php | 4 +++- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/NEWS b/NEWS index 39450eea..7fabdf03 100644 --- a/NEWS +++ b/NEWS @@ -11,6 +11,7 @@ NEWS ( CHANGELOG and HISTORY ) HTMLPurifier 4.1.0, unknown release date ! Support proprietary height attribute on table element +! Support YouTube slideshows that contain /cp/ in their URL. 4.0.0, released 2009-07-07 # APIs for ConfigSchema subsystem have substantially changed. See diff --git a/library/HTMLPurifier/Filter/YouTube.php b/library/HTMLPurifier/Filter/YouTube.php index aca972f6..23df221e 100644 --- a/library/HTMLPurifier/Filter/YouTube.php +++ b/library/HTMLPurifier/Filter/YouTube.php @@ -7,13 +7,13 @@ class HTMLPurifier_Filter_YouTube extends HTMLPurifier_Filter public function preFilter($html, $config, $context) { $pre_regex = '#]+>.+?'. - 'http://www.youtube.com/v/([A-Za-z0-9\-_]+).+?#s'; + 'http://www.youtube.com/((?:v|cp)/[A-Za-z0-9\-_=]+).+?#s'; $pre_replace = '\1'; return preg_replace($pre_regex, $pre_replace, $html); } public function postFilter($html, $config, $context) { - $post_regex = '#([A-Za-z0-9\-_]+)#'; + $post_regex = '#((?:v|cp)/[A-Za-z0-9\-_=]+)#'; return preg_replace_callback($post_regex, array($this, 'postFilterCallback'), $html); } @@ -24,10 +24,10 @@ class HTMLPurifier_Filter_YouTube extends HTMLPurifier_Filter protected function postFilterCallback($matches) { $url = $this->armorUrl($matches[1]); return ''. - ''. + 'data="http://www.youtube.com/'.$url.'">'. + ''. ''. diff --git a/smoketests/preserveYouTube.php b/smoketests/preserveYouTube.php index 52f04a02..c1b74dbe 100644 --- a/smoketests/preserveYouTube.php +++ b/smoketests/preserveYouTube.php @@ -15,7 +15,9 @@ echo '';

HTML Purifier Preserve YouTube Smoketest

'; +$string = ' + +'; $regular_purifier = new HTMLPurifier(); -- 2.11.4.GIT