Форумы xBB

Форумы xBB > BBCode и прочие языки упрощенной разметки

Как создать тег [video] для BBCode

Автор: dima. Последнее редактирование: 2010-10-01 07:20:27

Разработчик - Гость Glue. Большое ему спасибо.
 
Гость Glue
Еще раз здравствуйте, Дмитрий!
Предлагаю очередной тэг: video.
Привожу мое описание класса для этого тэга.
Работает при отключенной опции autolink ($bb->autolink=false)
Как добавлять новые тэги и кнопки, думаю, уже тут писать не нужно, кому надо - смотрите выше.
PHP

<?php
// Класс для тега [video]
class Xbb_My_Video extends bbcode
{
    public $behaviour = 'img';
 
    function get_html($tree = null)
    {
        $param = htmlspecialchars(parent::get_html($tree));
 
        // youtube.com
                $param = preg_replace('/(http:\/\/|http:\/\/www\.)youtube\.com\/watch\?v=([a-zA-Z0-9_\-]+(.*))/i','<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/$2&hl=en"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/$2&hl=en&rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="344"></embed></object>', $param);
 
        // rutube.ru
        $param = preg_replace('/(http:\/\/|http:\/\/www\.)rutube\.ru\/tracks\/\d+.html\?v=([a-zA-Z0-9_\-]+(.*))/i', '<OBJECT width="470" height="353"><PARAM name="movie" value="http://video.rutube.ru/$2"></PARAM><PARAM name="wmode" value="window"></PARAM><PARAM name="allowFullScreen" value="true"></PARAM><PARAM name="flashVars" value="uid=662118"></PARAM><EMBED src="http://video.rutube.ru/$2" type="application/x-shockwave-flash" wmode="window" width="470" height="353" allowFullScreen="true" flashVars="uid=662118"></EMBED></OBJECT>', $param);
       
        // vimeo.com
        $param = preg_replace('/(http:\/\/|http:\/\/www\.)vimeo\.com\/([a-zA-Z0-9_\-]+)/i', '<object width="400" height="302"><param name="allowfullscreen" value="true"></param><param name="allowscriptaccess" value="always"></param><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=$2&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=&fullscreen=1"></param><embed src="http://vimeo.com/moogaloop.swf?clip_id=$2&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=&fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="302"></embed></object><br />', $param);
 
        // smotri.com
        $param = preg_replace('/http:\/\/smotri.com\/video\/view\/\?id\=([a-zA-Z0-9_\-]+)(.*)/i', ' <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="330"><param name="movie" value="http://pics.smotri.com/scrubber_custom8.swf?file=$1&bufferTime=3&autoStart=false&str_lang=rus&xmlsource=http%3A%2F%2Fpics.smotri.com%2Fcskins%2Fblue%2Fskin_color_lightaqua.xml&xmldatasource=http%3A%2F%2Fpics.smotri.com%2Fskin_ng.xml"></param><param name="allowScriptAccess" value="always"></param><param name="allowFullScreen" value="true"></param><param name="bgcolor" value="#ffffff"></param><embed src="http://pics.smotri.com/scrubber_custom8.swf?file=$1&bufferTime=3&autoStart=false&str_lang=rus&xmlsource=http%3A%2F%2Fpics.smotri.com%2Fcskins%2Fblue%2Fskin_color_lightaqua.xml&xmldatasource=http%3A%2F%2Fpics.smotri.com%2Fskin_ng.xml" quality="high" allowscriptaccess="always" allowfullscreen="true" wmode="window"  width="400" height="330" type="application/x-shockwave-flash"></embed></object>', $param);
       
        // videoradar.ru
        $param = preg_replace('/(http:\/\/|http:\/\/www\.)videoradar\.ru\/video\/([a-zA-Z0-9_\-]+)\.html/i', '<object width=468 height=396 id=flvplayer align=middle><param name=allowScriptAccess value=always /><param name=allowFullScreen value=true /><param name=quality value=high /><param name=wmode value=window /><param name=bgcolor value=#ffffff /><param name=movie value="http://videoradar.ru/player/vplayer.swf?v=$2&host=videoradar.ru&logo=http://videoradar.ru/player/logo.png&linkfromdisplay=true&streamscript=lighttpd" /><embed src="http://videoradar.ru/player/vplayer.swf?v=$2&host=videoradar.ru&logo=http://videoradar.ru/player/logo.png&linkfromdisplay=true&streamscript=lighttpd" quality=high wmode=window bgcolor=#ffffff width=468 height=396 name=flvplayer align=middle allowScriptAccess=always allowFullScreen=true type=application/x-shockwave-flash pluginspage=http://www.macromedia.com/go/getflashplayer></embed></object>', $param);
 
                // myspace.com
                $param = preg_replace('/(http:\/\/|http:\/\/www.)(vids\.myspace\.com\/)(.*\&amp\;|.*\&)+videoid=([\d])+(.*)/i','<object width="425px" height="360px" ><param name="allowFullScreen" value="true"/><param name="wmode" value="transparent"/><param name="movie" value="http://mediaservices.myspace.com/services/media/embed.aspx/m=$4,t=1,mt=video"/><embed src="http://mediaservices.myspace.com/services/media/embed.aspx/m=$4,t=1,mt=video" width="425" height="360" allowFullScreen="true" type="application/x-shockwave-flash" wmode="transparent"></embed></object>',$param);
               
       return $param;
    }
}
?>
 

ЗЫЖ последняя регулярка для myspace не пашет по неведомой причине,
хотя валидность на онлайн тестерах регулярок проходит, да и по логике тоже вроде все верно. Кто найдет баг - отпишитесь плз тут.
Дополнение списка хостов тоже приветствуется.
 
Чуть не забыл: код кнопки, запрашивает ссылку на видео,
в том числе и для тытрубы (а не сам хэш из линка).
PHP

 <td><a href="#"
 onclick="xbb_insertLink('video', 'Введите ссылку на видеоролик:');return false;"
 class="toolbarButton"><img alt="[video]" src="./images/buttons/video.gif"
 id="video_url" /></a></td>
 
 

2 комментария

24.05.2011 10:31:26 #
Opera Nutty
у меня на муйспейс такие регулярки Хд.
PHP

array('/vids\.myspace\.com.*?videoID=([^&]*)/i', '<object width="430px" height="386px"><param name="wmode" value="transparent"/><param name="allowscriptaccess" value="always"/><param name="movie" value="http://lads.myspace.com/videos/vplayer.swf"/><param name="flashvars" value="m={ID_VIDEO}"/><embed src="http://lads.myspace.com/videos/vplayer.swf" width="430" height="386" flashvars="m={ID_VIDEO}" type="application/x-shockwave-flash" allowscriptaccess="always" /></object>'),
 
array('/myspacetv\.com.*?videoID=([^&]*)/i', '<object width="430px" height="386px"><param name="wmode" value="transparent"/><param name="allowscriptaccess" value="always"/><param name="movie" value="http://lads.myspace.com/videos/vplayer.swf"/><param name="flashvars" value="m={ID_VIDEO}"/><embed src="http://lads.myspace.com/videos/vplayer.swf" width="430" height="386" flashvars="m={ID_VIDEO}" type="application/x-shockwave-flash" allowscriptaccess="always" /></object>'),
 
24.05.2011 10:56:22 #
Mozilla Firefox dima
Спасибо. Полезно Well

Ответить:

Представиться как     Антибот:
   

Просьба не постить мусор. Пользуйтесь кнопкой предварительного просмотра на панели инструментов редактора.

Введите логин: и пароль: (

© 2007-2017, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.