простое регулярное выражение для видео vimeo - PullRequest
1 голос
/ 15 марта 2011

Как бы я написал регулярное выражение, которое проверяет совпадения для обоих?

http://vimeo.com/moogaloop.swf?clip_id=CLIP_ID

http://player.vimeo.com/video/CLIP_ID

Ответы [ 3 ]

2 голосов
/ 15 марта 2011

Это регулярное выражение будет работать для обоих (проверено):

preg_match('#http://(\w+.)?vimeo.com/(video/|moogaloop\.swf\?clip_id=)\w+#i', $content);

обновление

Для захвата clip_id используйте это скорректированное регулярное выражение:

preg_match('#http://(?:\w+.)?vimeo.com/(?:video/|moogaloop\.swf\?clip_id=)(\w+)#i', $content, $match);

$match[1] содержит идентификатор клипа

По сути, добавление '?:' Внутри каждого из '()' говорит о том, что он не должен отображаться в массиве $ match.

1 голос
/ 01 февраля 2012
function getVimeoInfo($link)
 {
    if (preg_match('~^http://(?:www\.)?vimeo\.com/(?:clip:)?(\d+)~', $link, $match)) 
    {
        $id = $match[1];
    }
    else
    {
        $id = substr($link,10,strlen($link));
    }

    if (!function_exists('curl_init')) die('CURL is not installed!');
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://vimeo.com/api/v2/video/$id.php");
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    $output = unserialize(curl_exec($ch));
    $output = $output[0];
    curl_close($ch);
    return $output;
}
0 голосов
/ 15 марта 2011

Не проверено, но должно работать:

preg_match( '/http:\/\/(?:player\.)?vimeo\.com\/(?:moogaloop\.swf\?clip_id=|video\/)/',$string)

, где $string - это то, с чем вы сопоставляете.

...