2014-02-08 3 views
0

Я использую HTML Purifier со следующей конфигурацией:Почему очиститель HTML удаляет src YouTube iframe?

$config = HTMLPurifier_Config::createDefault(); 
    $config->set('HTML.Doctype', 'XHTML 1.0 Transitional'); 
    $config->set('URI.DisableExternalResources', false); 
    $config->set('Core.RemoveInvalidImg',true); 
    $config->set('URI.DisableResources', false); 
    $config->set('HTML.Allowed', 'p[align|style],strong,b,em,table[class|width|cellpadding],td,tr,h3,h4,h5,hr,br,u,ul,ol,li,img[src|width|height|alt|class],iframe[src|width|height|alt|class|frameborder|allowfullscreen],span[class],strike,sup,sub'); 
    $config->set('HTML.SafeIframe', true); 
    $config->set('URI.SafeIframeRegexp', '%^(https?:)?//(www\.youtube(?:-nocookie)?\.com/embed/|player\.vimeo\.com/video/)%'); //allow YouTube and Vimeo 
    $purifier = new HTMLPurifier($config); 

Когда я прохожу YouTube код:

<iframe width="560" height="315" src="http://www.youtube.com/embed/nS8xiUlYNO0"   frameborder="0" allowfullscreen></iframe> 

Следующая происходит на выходе (без ЦСИ):

<iframe width="560" height="315" src="" frameborder="0"></iframe> 

Почему src удаляется?

+2

Что распечатывается, если вы эхо-данные прямо перед тем, как попасть в очиститель HTML? –

ответ

0

Я изменил регулярное выражение для этого:

%(www.youtube.com/embed)%

Регулярное выражение они дали на сайте, похоже, не работает. Youtube перешли к относительному протоколу «//www.youtube.com/embed/123456»

Кроме того, allowfullscreen не является поддерживаемым атрибутом для iframe из коробки в очистителе HTML. Это может также вызвать проблему.

Смежные вопросы