看了一眼,但找不到适合的工作(和最近的)解决方案。
使用API我收到的字符串如下:
<object width="600" height="338">
<param name="movie" value="http://www.youtube.com/v/ItT88H3nAWw?version=3&feature=oembed"></param>
<param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param>
<embed src="http://www.youtube.com/v/ItT88H3nAWw?version=3&feature=oembed" type="application/x-shockwave-flash" width="600" height="338" allowscriptaccess="always" allowfullscreen="true"></embed>
</object>
PHP中的正则表达式只提取视频ID?例如ItT88H3nAWw
答案 0 :(得分:1)
从src
代码没有正则表达式获取embed
参数。然后按照以下方式解析它:
$youtubeUrl = 'http://www.youtube.com/v/ItT88H3nAWw?version=3&feature=oembed';
if ( preg_match('youtube\.\w+.*?v[/=](\w+)', $youtubeUrl, $matches) ) {
$youtubeId = $matches[1];
}
这个正则表达式将处理两个:
要将HTML字符串转换为对象,请使用SimpleXMLElement
。
$obj = new SimpleXMLElement($htmlCode);
$youtubeUrl = $obj->embed->src;
答案 1 :(得分:0)
Regexp is ugly。请使用以下内容:getBetween('www.youtube.com/v/','?version')
好的,这是另一个版本。假设$s
是您的字符串而youtube不会更改它的ID长度:
$p = strpos($s, 'youtube.com/v/') + count('youtube.com/v/');
$id = substr($s, $p, count('ItT88H3nAWw') );