1

VimeoビデオからIDを取得するために使用しているコードは次のとおりです:function

function vimeo_embed_format(src, width, height) {
  var final_syntax;
  var first_part;
  var second_part;
  var third_part;

  first_part = "<iframe src='http://player.vimeo.com/video/" + src + "' ";
  second_part = "width='" + width + "' height='" + height +"' ";
  third_part = "frameborder='0'></iframe>";
  final_part = first_part + second_part + third_part;

  return final_part;
}

vimeo_id_extract(url) {
  var re;
  var match;
  var final_id;

  re = new RegExp('/[0-9]+', "g");
  match = re.exec(url);

  if(url.toLowerCase().indexOf('vimeo') > 0) {
    if (match == null) {
      return false;
    } else {
      return match[0].substring(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) {
    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。修正するにはどうすればよいですか?

4

1 に答える 1

2

問題は、if(url.toLowerCase().indexOf('vimeo') > 0)URLの場合、URLvimeo.com/idnroのインデックスが 0 の場合です。また、次のような URL を考慮して、vimeo正規表現を変更することもできます。re = new RegExp('[0-9]+$')

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

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

アップデート

不適切な形式の URL が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);
}
于 2011-01-31T23:31:02.420 に答える