Проблемы при попытке разобрать идентификатор с URL Vimeo - PullRequest
1 голос
/ 01 февраля 2011

Код, который я использую для получения идентификатора из видео Vimeo:проблема в том, что он возвращает мне undefined.Что я должен сделать, чтобы исправить?

1 Ответ

2 голосов
/ 01 февраля 2011

Проблема в том, что if(url.toLowerCase().indexOf('vimeo') > 0), если ваш URL-адрес равен vimeo.com/idnro, тогда индекс vimeo в URL-адресе равен 0. Также вы, вероятно, захотите изменить свое регулярное выражение на re = new RegExp('[0-9]+$'), чтобыучтите URL, такие как

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

В противном случае вы будете соответствовать 687, а не фактическому идентификатору видео.Я также настоятельно рекомендую FireBug для отладки подобных вещей.Это драгоценный камень.

ОБНОВЛЕНИЕ

Если предположить, что неправильно сформированный URL войдет в vimeo_id_extract, это то, что я бы сделал.Сначала верните число в обоих случаях из vimeo_id_extract и убедитесь, что возвращенное число не является недействительным.Если нет, то все должно быть в порядке, иначе в URL не было бы идентификатора видео.

Если вы знаете, что идентификатор видео всегда завершает строку, то добавьте знак $ в конце регулярного выражения вубедитесь, что последняя семизначная последовательность извлечена.

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);
}
...