2011-01-31 20 views
1

コードからIDを解析しようとして、この一つです問題私はVimeoのビデオからIDを取得するために使用していVimeoのURLを

function vimeo_do(video, width, height) { 
    var make_syntax; 
    var regexp_url; 

    regexp_url = /((mailto\:|(news|(ht|f)tp(s?))\:\/\/){1}\S+)/; 

    if(regexp_url.test(video) == false) { 
    make_syntax = vimeo_embed_format(vimeo_id_extract(video), width, height); 
    } else { 
    make_syntax = vimeo_embed_format(video, width, height); 
    } 

    document.writeln(make_syntax); 
} 

問題は、私にundefinedを返すことです。正しいために何をすべきですか?あなたはURLは、URLでvimeoのインデックスは0です。また、あなたはおそらく、あなたのようなURLを考慮してre = new RegExp('[0-9]+$')になるように正規表現している修正したいと思いますですvimeo.com/idnroあるなら

+0

URLの例はありますか? – Basic

+0

@Basiclife:http://vimeo.com/18890010 –

+0

「http://」またはそれと類似していない? – Basic

答えて

2

問題は、このif(url.toLowerCase().indexOf('vimeo') > 0)ある

http://vimeo.com/groups/687/videos/3741327 

そうしないと、実際の動画IDではなく、687と一致します。また、このようなデバッグのためにFireBugを強くお勧めします。それは宝石です。病気に形成されたURLを想定し

UPDATE

が、これは私が何をするのかであるvimeo_id_extractに入ります。最初にvimeo_id_extractから両方の機会に番号を返し、返された番号が無効でないことを確認します。そうでなければ、すべてがうまくいくはずです。さもなければ、URLにビデオIDがありませんでした。

動画IDが常に文字列を終了することがわかっている場合は、$記号を正規表現の末尾に追加して、最後の7桁のシーケンスが抽出されていることを確認します。

function vimeo_id_extract(url) { 
    var re; 
    var match; 
    re = new RegExp('[0-9]{7}'); 
    match = re.exec(url); 
    if(match != null) { 
    return match[0]; 
    } 
    else { 
    return -1; 
    } 
} 

function vimeo_do(video, width, height) { 
    var make_syntax; 
    var regexp_url; 

    regexp_url = /((mailto\:|(news|(ht|f)tp(s?))\:\/\/){1}\S+)/; 

    if(regexp_url.test(video) == false) { 
    vimeo_id = vimeo_id_extract(video) 
    if vimeo_id != -1 { 
     make_syntax = vimeo_embed_format(vimeo_id_extract(video), width, height); 
    } 
    else { 
     // there is no video id in the string passed in 
    } 
    } else { 
    make_syntax = vimeo_embed_format(video, width, height); 
    } 

    document.writeln(make_syntax); 
} 
+0

'if'ステートメントで何を変更する必要がありますか? –

+0

@Nathan:上記の編集を参照してください。正規表現は、URLにクエリ文字列がある場合には失敗します。私は持っていたvimeoを見つけることができませんでしたが、あなたは決して知りません。だから最終的な修正は '/([0-9] +)'に変更し、戻り値は 'return match [1]' –

+0

にすることもできますが、IDだけを置くと同じ '/ –

関連する問題