Показать сообщение отдельно
  #1 (permalink)  
Старый 12.06.2010, 15:55
Новичок на форуме
Отправить личное сообщение для Romych Посмотреть профиль Найти все сообщения от Romych
 
Регистрация: 20.02.2010
Сообщений: 6

Регулярное выражение для youtube.com
Приветствую!

есть скрипт позволяющий пользователям форума (движок IPB 1.3)
вставлять в посты ролики с youtube

var r, html, result;
var div = document.getElementsByTagName("div")
for( i=0; i < div.length; i++ )
{
if(div[i].className == 'postcolor')
{
if(div[i].innerHTML.indexOf("[youtube]")!=-1 && div[i].innerHTML.indexOf("[/youtube]")!=-1)
{
  html = div[i].innerHTML;
  r = /\\[youtube\\]([0-9a-zA-Z\\-\\_]{11})\\[\\/youtube\\]/g
  result = html.replace(r, "<embed src='http://www.youtube.com/v/$1' type='application/x-shockwave-flash' wmode='transparent' width='425' height='350'></embed>")

  div[i].innerHTML = result}}}


НО работает скрипт только с окончаниями ссылок,
если ссылка такая http://www.youtube.com/watch?v=gAnhjo25udo,
то в теги пользователь вставляет окончание [youtube]gAnhjo25udo[/youtube]

я хотел облегчить своим пользователям задачу и переделать скрипт для работы с целой ссылкой
сначала подумал о методе slice() и извлекать из строки, то что идёт после v= , но ссылки могут быть видов:

http://www.youtube.com/watch?v=gAnhjo25udo
http://youtube.com/watch?v=gAnhjo25udo

поэтому от этого метода отказался

стал переписывать строку с регулярным выражением (в которых я практически ноль)
перепробовал много вариантов, пока ничего путного

вот к примеру один из вариантов
(экранирование идёт двойным бэк-слэшем \\, поскольку при сохранении один из них съедается)


Код:
r = /\\[youtube\\]\\http:\\/\\/|\\www\\.\\youtube.\\com\\/watch\\?\\v=([0-9 a-zA-Z\\-\\_]{11})\\[\\/youtube\\]/g
при таком варианте ввожу в пост форума теги с ссылкой на ролик

[youtube]http://www.youtube.com/watch?v=gAnhjo25udo[/youtube]

при сохранении поста получаю -
www.youtube.com/watch?v=gAnhjo25udo[/youtube]

т.е. [youtube]http:// как бы читается дальше никак (читается то, что до знака |, если его убрать, вообще ничего не читается, в посте будет просто [youtube]http://www.youtube.com/watch?v=gAnhjo25udo[/youtube] )

подскажите, что не так?
или может быть вообще другой путь избрать?
Ответить с цитированием