ここから本文です

お世話になっております。 正規表現による指定文字列の取得について教えて下さ...

man********さん

2018/9/1912:42:13

お世話になっております。

正規表現による指定文字列の取得について教えて下さい。

動画サイトvimeoで次のような6つのパターンのURLがあるのですが、最後の数字だけ抜き出すにはどのような書き方になりますでしょうか?

https://vimeo.com/289879647
https://vimeo.com/channels/staffpicks/289879647
https://vimeo.com/groups/motion/videos/289879647
(※上の3つの「http版」も併せて6つです。)

下記PHPの➁を補完して頂きたいのです。

<?php

// ➀何が入るか不明
$inputURL = '';

// ➁6パターンから文字列を取得
if( preg_match( '@https?://[^/]+/channels/staffpicks\?[^\?]@', $inputURL, $m) ||
preg_match( '@https?://[^/]+/([^\?]+)@', $inputURL, $m) ){





// ➂文字列を出力
$VimeoId = $m[1];
echo $VimeoId;

}
?>

昨日も似た質問をしたのですが、アイパスを忘れて分からなくなったので新しいアカウントで失礼致します。

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
46
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

shi********さん

リクエストマッチ

2018/9/1913:05:48

>最後の数字だけ抜き出す

// スラッシュで終わっていたらスラッシュを削除
if (substr($inputURL, strlen($inputURL)-1) === '/') { $inputURL = substr($inputURL, 0, strlen($inputURL)-1); }
// スラッシュで分割
$arr = explode('/', $inputURL);
// 最後の要素を取得
$num = array_pop($arr);
// 数字のみかどうかチェック
if (!ctype_digit($num)) { $num = ''; }
echo $num;

でいいのでは?

  • 質問者

    man********さん

    2018/9/1913:12:55

    なるほど。すみません。

    「最後の文字だけ抜き出す」のはそうなのですが、➀でいろいろなURLが入るために、if条件ではvimeoかどうかを判定し、「vimeoだったら、最後の文字だけ抜き出す」ということになります。

    他のURLだと「最後の文字じゃないのを抜き出す」だったりするので、ifのところにはvimeoかどうかの判定も加えたいと考えておりました。



    あ、それならばまず

    if( preg_match('/vimeoo/',$inputURL) ){
    //ここにご提示のコード
    }

    とすればよい話でしょうか?

  • その他の返信(4件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2018/9/19 14:38:41

ありがとうございます。スラッシュを消すなどお気遣い頂いて感謝です。

ベストアンサー以外の回答

1〜1件/1件中

pis********さん

2018/9/1914:21:08

正規表現で行いたいのであれば次のもので可能だと思います。
https?://vimeo.com/(?:channels/staffpicks/|groups/motion/videos/)?(\d+)

他回答の返信でおっしゃっているように「vimeoだったら、最後の文字だけ抜き出す」であれば次のように簡略化も可能です。
https?://vimeo.com/[^\d]*(\d+)

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる