Добавление видео из YouTube

Заметил, что при вставки в пост видео из YouTube (через кнопку «видео») иногда оно не вставляется. Вначале думал, что из-за каких-то своих последних ошибок, но потом заметил закономерность. На YouTube ссылки бывают, грубо-говоря, двух типов:
http://www.youtube.com/watch?v=kOXNOYTLYR8&feature=player_embedded
и
http://www.youtube.com/watch?feature=player_embedded&v=kOXNOYTLYR8
Первый вариант работает, второй — нет. Видео просто не вставляет. Пытался разобраться сам, но опыта не хватает.

10 комментариев

avatar
Собака зарыта тут /engine/modules/text/Text.class.php в функции VideoParser.
Только чтобы решить этот вопрос нужно некоторое знание регулярных выражений.
  • gran
  • +1
avatar
feature=player_embedded&
вот это если выкинуть, то вполне начинает крутится
avatar
Да, да, я об этом и говорил. Но пользователям не скажешь же: «ну вы вот этот кусочек ссылки удаляйте и смело вставляйте» :)
avatar
там такая регекспа прописана в файлах, это давно уже так.
просто так редко кто вставляет видео. в основном пользуются ембед кодами.
avatar
лови
$you_preg = '~<video>http://(?:www\.|)?youtube.com/watch?(.*?)(v=)([a-zA-Z0-9_-]+)(.*?)</video>~usi';
  • Rpsl
  • 0
avatar
Добавил для ссылок вида youtu.be/8vJiSSAMNWw:
$sText = preg_replace('/<video>http:\/\/(?:www\.|)youtu\.be\/([a-zA-Z0-9_\-]+)(\?.+)?<\/video>/Ui', '<iframe width="560" height="315" src="http://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe>', $sText);
avatar
Это в /engine/modules/text/Text.class.php в функции VideoParser
avatar
Для 1.0.3 как решить проблему у меня пользователи по кнопке вставляют и ссылку

а код должен быть именно вот таким
http://www.youtube.com/watch?v=XDg8uQXHuoo


а не предположим таким
http://www.youtube.com/watch?feature=player_detailpage&v=ww1YHyVYszs

вот эта строка всегда лишняя —
feature=player_detailpage&

её надо всегда удалиять и оставлять до слов watch?v

Как автоматзировать сей процесс? Подскажите уважаемы гуру.
avatar
парни, а как сделать чтобы https ссылки вставлял?
avatar
разобрался, нужно вставить http(?:s|) вместо http
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.