//bbcode addet
//это в начале функции (обязательно)
$str = str_replace('http://www.youtube.com', 'youtube-com', $str);
$str = str_replace('http://m.youtube.com', 'youtube-com', $str);
$str = str_replace('http://youtu.be/', 'youtube-com/watch?v=', $str);
// это в конце функции
$str = preg_replace_callback('!youtube\-com\/watch\?v=([a-z\d\-_]+)([^\s|\[]+)?!si',
'youtube_video',
$str.' ');
$str = preg_replace_callback('!youtube\-com\/index\?[^\?]+\?v=([a-z\d\-_]+)([^\s|\[]+)?!is',
'youtube_video',
$str.' ');
$str = preg_replace_callback('!youtube\-com\/watch\?v=([a-z\d\-_]+)([^\s|\[]+)?!si',
'youtube_video',
$str.' ');
$str = preg_replace_callback('!<iframe.*?youtube\-com/embed/([a-z\d\-_]+).*?</iframe>!is',
'youtube_video',
$str.' ');
обрабатываем
function youtube_video($url){
$wd = browser_type();
if($wd['type']!=0){
return '<div style="border: 1px solid #eee; background: #000; color: #fff;width:'.$wd['x'].'px; border-radius: 6px; padding: 2px;"><div style="border-radius: 4px; margin: 3px; text-align: center; padding: 3px; font-weight: bold; cursor:pointer;" onclick="var _vd=this.parentNode.getElementsByTagName(\'div\')[1];if(_vd.style.display==\'none\'){_vd.style.display=\'\';}else{_vd.style.display=\'none\';}">Видео</div>
<div style="display:none;">
<video width="'.$wd['x'].'" height="'.$wd['y'].'" id="player1" preload="none">
<source type="video/youtube" src="http://www.youtube.com/watch?v='.$url[1].'" />
</video>
<script>
$(\'video\').mediaelementplayer({
success: function(media, node, player) {
$(\'#\' + node.id + \'-mode\').html(\'mode: \' + media.pluginType);
}
});
</script></div></div>';
}else{
return '<div style="border: 1px solid #eee; background: #000; color: #fff; border-radius: 6px; text-align: center; padding: 5px; font-weight: bold;">Видео недоступно для телефона</div>';
}
}
function vk_video($string){
$wd = browser_type();
preg_match('|<iframe src="(.*)"(.*)</iframe>|is', $string, $frame);
preg_match_all('#(oid=[\d]+|id=[\d]+|hash=[\da-z]+)#i', $frame[1], $video_param);
if($video_param[1][0]!='' AND $video_param[1][1]!='' AND $video_param[1][2]!=''){
if($wd['type']==2){
$string = str_replace($frame[0], '<div style="border: 1px solid #eee; background: #000; color: #fff;width:'.$wd['x'].'px; border-radius: 6px; padding: 2px;"><div style="border-radius: 4px; margin: 3px; text-align: center; padding: 3px; font-weight: bold; cursor:pointer;" onclick="var _fr=this.parentNode.getElementsByTagName(\'iframe\')[0];if(_fr.style.display==\'none\'){_fr.style.display=\'\';}else{_fr.style.display=\'none\';}">Видео</div><iframe style="display:none;" src="http://vk.com/video_ext.php?'.$video_param[1][0].'&'.$video_param[1][1].'&'.$video_param[1][2].'&hd=1" width="'.$wd['x'].'" height="'.$wd['y'].'" frameborder="0"></iframe></div>', $string);
}else{
$string = str_replace($frame[0], '<div style="border: 1px solid #eee; background: #000; color: #fff; border-radius: 6px; text-align: center; padding: 5px; font-weight: bold;">Видео недоступно для телефона</div>', $string);
}
}
return $string;
}
тут вывод плеера ютьюба заменяйте на свой, т.к. я использую отдельный плеер на сайте.
_____________
вспомогательная php функция определения размера фрейма
function browser_type(){
if(isset($_COOKIE['browser_type'])){
if($_COOKIE['browser_type']==2){
return array('x' => 640, 'y' =>340, 'type' => 2);
}else if($_COOKIE['browser_type']==2){
return array('x' => 460, 'y' =>280, 'type' => 1);
}else{
return array('x' => 0, 'y' =>0);
}
}else{
return array('x' => 0, 'y' =>0, 'type' => 0);
}
}
вспомогательная js функция определения размера фрейма видео
function BrowserType(){
var BrowserType = getCookie('browser_type');
if(BrowserType == '' || BrowserType == undefined){
if(window.screen.width >= 800){
setCookie('browser_type', 2, 300, '/');
}else if(window.screen.width > 460){
setCookie('browser_type', 1, 3600, '/');
}else{
setCookie('browser_type', 0, 300, '/');
}
}
}
/***** AUTOSTART *****/
$(document).ready(function(){
BrowserType();
});
________
а ни кто и не говорил, что будет легко)))