Всем привет!
Возникла необходимость вставки видео с vk.com.
Погуглив нашел не большую функцию для данной возможности.
class InfisJSC_VKontakte_MatchCallback
{
public static function matchVKvideo($url, $matchedId, array $site)
{
$pageHtml = file_get_contents('http://vkontakte.ru/video' . $matchedId);
if (preg_match('/\\\"hash2\\\":\\\"(?P<hash>[a-zA-Z0-9]+)\\\"/siU', $pageHtml, $match))
{
if (preg_match('/(?P<oid>[0-9\-]+)_(?P<id>[0-9]+)/si', $matchedId, $oidid))
{
return $oidid['oid'] . '_' . $oidid['id'] . '_' . $match['hash'];
}
}
elseif (preg_match('%src=\\\"http:\\\/\\\/www\.youtube\.com\\\/embed\\\/(?P<hash>[a-zA-Z0-9]+)\?%siU', $pageHtml, $match))
{
return $match['hash'];
}
return '';
}
/////////
Не много изменил под себя
public function matchVKvideo($url, $matchedId)
{
$pageHtml = file_get_contents($url);// . $matchedId);
if (preg_match('/\\\"hash2\\\":\\\"(?P<hash>[a-zA-Z0-9]+)\\\"/siU', $pageHtml, $match))
{
if (preg_match('/(?P<oid>[0-9\-]+)_(?P<id>[0-9]+)/si', $matchedId, $oidid))
{
return $oidid['oid'] . '_' . $oidid['id'] . '_' . $match['hash'];
}
}
elseif (preg_match('%src=\\\"http:\\\/\\\/www\.youtube\.com\\\/embed\\\/(?<hash>[a-zA-Z0-9]+)\?%isU', $pageHtml, $match))
{
return $match['hash'];
}
return '';
}
Но столкнулся с данной проблемой,
так как в вк есть так же ютубовские видео, и данный метод должен их id тоже выдавать. Этого не происходит.
не много полазив в html'е вк, допер что id видео у ютуба может быть не только [a-zA-Z0-9] но и что то типа этого
TIZ8CVa-Zm8
причем черта может быть в любом месте, так что не все видео получается получить. В регулярках я понимаю не много, пробовал данную конструкцию
([a-zA-Z0-9]-[a-zA-Z0-9])|([a-zA-Z0-9])+
, так же парсит не все видео. Собственно как модифицировать данную регулярку?