Приветствую!
есть скрипт позволяющий пользователям форума (движок 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] )
подскажите, что не так?
или может быть вообще другой путь избрать?