0

プレーンなYouTubeリンクを実際のプレーヤーのHTMLコードに変換するこのpreg_matchルールがあります。

preg_match('#(?:http://)?(?:www\.)?(?:youtube\.com/(?:v/|watch\?)|youtu\.be/)([\w-]+)(?:\S+)?#', $text, $youtube_match);

1)ビデオリンクの直後にタグがある場合は機能しません。たとえば、brタグ: 、おそらくURLの一部であるhttp://www.youtube.com/watch?v=4rUGhlNCNho<br />と考えられます。<br

2)url変数の混合順序にも一致するようにルールを変更するにはどうすればよいですか?例:

http://www.youtube.com/watch?feature=player_embedded&v=4rUGhlNCNho それ以外の http://www.youtube.com/watch?v=4rUGhlNCNho

4

3 に答える 3

1

iamが正しければ、ビデオを生成して埋め込むために必要なのはパラメータv=だけです。

preg_match('#(?:http://)?(?:www\.)?(?:youtube\.com/(?:v/|watch\?)|youtu\.be/)[a-z0-9A-Z\-_\=\&\%\?]*v\=([a-zA-Z0-9]+)#', $text, $youtube_match);
于 2013-01-11T18:53:41.013 に答える
0

GreenRoverの答えの後の私の最後のコード:

preg_match('#(?:http://)?(?:www\.)?(?:youtube\.com/(?:v/|watch\?)|youtu\.be/)[a-z0-9A-Z\-_\=\&\%\?]*v\=([a-zA-Z0-9]+)([a-zA-Z0-9=&_]+)?#', $text, $youtube_match);

これは、これらのさまざまな状況(追加のテキストを含む改行で終わる、BRタグで終わるなど)と一致しました。

"http://www.youtube.com/watch?v=4rUGhlNCNho&feature=player_embedded" "http://www.youtube.com/watch?feature=player_embedded&v=4rUGhlNCNho " "http://www.youtube.com/watch?v=4rUGhlNCNho&feature=player_embedded\nETC" "http://www.youtube.com/watch?v=4rUGhlNCNho&feature=player_embedded " "http://www.youtube.com/watch?v=4rUGhlNCNho&feature=player_embedded<br />"

于 2013-01-11T21:34:32.733 に答える
0

PCRE後読みの内部でdosentが可変応答をサポートするため、これを使用できます

(?:http://)?(?:www\.)?(?:youtube\.com/(?:v/|watch\?)|youtu\.be/)([\w-]+)(?:\S+)?$(?<!>)

他の正規表現フレーバー、代わりにこれを使用できます

(?:http://)?(?:www\.)?(?:youtube\.com/(?:v/|watch\?)|youtu\.be/)([\w-]+)(?:\S+)?$(?<!<[^>]*>)
于 2013-01-11T21:41:32.793 に答える