Разрешение встраивания YouTube с помощью HTMLPurifier на Laravel 4 и mewebstudio/Purifier

Я использую поставщика услуг пакетов mewebstudio/Purifier HTMLPurifier на Laravel 4.2.

По какой-то причине я не могу заставить работать функцию YouTube iframe. Я даже попробовал пример автора, чтобы включить его, но безуспешно.

Это моя конфигурация пакета HTMLPurifier:

return array(
    'encoding' => 'UTF-8',
    'finalize' => true,
    'preload'  => false,
    'settings' => array(
        'default' => array(
            'HTML.Doctype'             => 'XHTML 1.0 Strict',
            'HTML.Allowed'             => 'div[style],b,strong,i,em,a[href|title|style],ul,ol,li,p[style],br,span[style],
                                            img[width|height|alt|src],h1[style],h2[style],h3[style],h4[style],h5[style],table[class|style|summary],tr,td[abbr],tbody,thead',
            'CSS.AllowedProperties'    => 'font,font-size,font-weight,font-style,font-family,text-decoration,padding-left,color,background-color,text-align',
            'HTML.SafeObject'          => true,
            'Output.FlashCompat'       => true,
            'HTML.SafeIframe'          => true,
            'URI.SafeIframeRegexp'     => '%^(http://|https://|//)(www.youtube.com/embed/|player.vimeo.com/video/)%',
            'AutoFormat.AutoParagraph' => true,
            'AutoFormat.RemoveEmpty'   => true,
            'HTML.Nofollow'            => true,
            'URI.Host'                 => 'domain.com',
        ),
    ),
);

И это мой тест в маршрутах:

Route::get('/clean', function() {
    $pured = Purifier::clean('<iframe src="//www.youtube.com/embed/gLUdqi8J0mQ" width="640" height="360" frameborder="0"></iframe>', 'default');
    return $pured;
});

Все остальное работает, кроме этого.

Спасибо, товарищи воины :)


person Sir Code-A-lot    schedule 10.07.2014    source источник


Ответы (1)


В HTMLPurifier уже есть готовый фильтр для видео на Youtube, обязательно используйте его.

Чтобы использовать его, убедитесь, что в вашей конфигурации есть эта строка:

'Filter.YouTube' => true

Ваш окончательный файл конфигурации будет выглядеть так:

return array(
    'encoding' => 'UTF-8',
    'finalize' => true,
    'preload'  => false,
    'settings' => array(
        'default' => array(
            'HTML.Doctype'             => 'XHTML 1.0 Strict',
            'HTML.Allowed'             => 'div[style],b,strong,i,em,a[href|title|style],ul,ol,li,p[style],br,span[style],
                                            img[width|height|alt|src],h1[style],h2[style],h3[style],h4[style],h5[style],table[class|style|summary],tr,td[abbr],tbody,thead',
            'CSS.AllowedProperties'    => 'font,font-size,font-weight,font-style,font-family,text-decoration,padding-left,color,background-color,text-align',
            'HTML.SafeObject'          => true,
            'Output.FlashCompat'       => true,
            'HTML.SafeIframe'          => true,
            'URI.SafeIframeRegexp'     => '%^(http://|https://|//)(www.youtube.com/embed/|player.vimeo.com/video/)%',
            'AutoFormat.AutoParagraph' => true,
            'AutoFormat.RemoveEmpty'   => true,
            'HTML.Nofollow'            => true,
            'URI.Host'                 => 'domain.com',
            'Filter.YouTube'           => true
        ),
    ),
);
person Rui Gomes    schedule 10.07.2014