3

URLからつるビデオIDを取得する必要があります

したがって、このようなリンクからの出力

https://vine.co/v/bXidIgMnIPJ

このようになる

bXidIgMnIPJ

ここで Vimeo (VINE ではありません) のコード形式の他の質問を使用しようとしました Vimeoから img サムネイルを取得しますか?

これは私が使用しようとしたものですが、成功しませんでした

$url = 'https://vine.co/v/bXidIgMnIPJ';

preg_replace('~^https://(?:www\.)?vine\.co/(?:clip:)?(\d+)~','$1',$url)
4

6 に答える 6

3

おそらくベースネーム?

<?php
$url = 'https://vine.co/v/bXidIgMnIPJ';
var_dump(basename($url));    

http://codepad.org/vZiFP27y

于 2013-06-24T22:38:02.380 に答える
1

これが私が使用しているものです:

function getVineId($url) {
  preg_match("#(?<=vine.co/v/)[0-9A-Za-z]+#", $url, $matches);
  if (isset($matches[0])) {
    return $matches[0];
  }
  return false;
}

URL が HTTP か HTTPS か (またはプロトコルがまったくないか) を無視しながら、"vine.co/v/" が常に ID の前に来るようにするために後読みを使用しました。ID は任意の長さの英数字であると想定しています。ID の後の文字やパラメーター (Google キャンペーン トラッキング パラメーターなど) は無視されます。

「#」区切り文字を使用したので、スラッシュ (/) をエスケープする必要がなくなり、見栄えが良くなりました。

于 2013-11-24T20:16:26.177 に答える
1

/常にその形式であると仮定すると、URL を区切り文字で分割するだけで済みます。このような単純な URL には正規表現は必要ありません。

$id = end(explode('/', $url));
于 2013-06-24T22:37:18.777 に答える
1

ここで質問されているように参照すると、次の解決策がありますpreg_replace

$s = 'https://vine.co/v/bXidIgMnIPJ';
$new_s = preg_replace('/^.*\//','',$s);
echo $new_s;
// => bXidIgMnIPJ

または、入力文字列が実際に vine.co へのリンクであることを検証する必要がある場合:

$new_s = preg_replace('/^(https?:\/\/)?(www\.)?vine\.co.*\//','',$s);

/v/その部分が常に存在するのか、それとも常に存在するのかはわかりませんv...存在する場合は、より厳密な検証のために正規表現に追加することもできます:

$new_s = preg_replace('/^(https?:\/\/)?(www\.)?vine\.co\/v\//','',$s);
于 2013-06-24T22:51:56.403 に答える
0
$url = 'https://vine.co/v/b2PFre2auF5';
$regex = '/^http(?:s?):\/\/(?:www\.)?vine\.co\/v\/([a-zA-Z0-9]{1,13})$/';
preg_match($regex,$url,$m);
print_r($m);

1. b2PFre2auF5
于 2013-07-15T16:26:48.173 に答える