我正在尝试获取动态生成的页面上的视频总数。为此,我解析页面的html并搜索所有<object>
,<iframe>
和<embed>
标签。除了视频嵌入代码外,该页面不会包含任何其他类型的 iframe 内容,因此我可以确定任何 iframe 标签都是视频。问题是一些嵌入代码,例如Hulu,在<object>
标签内有<embed>
标签。所以对于我目前的正则表达式:
'/(<iframe|<object|<embed)/i'
此 Hulu 嵌入代码被视为 2 个视频而不是一个:
<object id="videoplayer1" width="728" height="407">
<param name="movie" value='http://www.hulu.com/embed/7qXAa2z1zXKPMw4mBakrRw'></param>
<param name="allowFullScreen" value="true"></param>
<param name="allowScriptAccess" value="never"></param>
<embed src='http://www.hulu.com/embed/7qXAa2z1zXKPMw4mBakrRw' type="application/x-shockwave-flash" allowfullscreen="true" width="728" height="407" allowscriptaccess='never'></embed>
</object>
我不想搜索所有嵌入标签,我只想搜索未被<object>
标签封装的标签。所以上面的 hulu 将被避免,但像这样的一个将被计算在内:
<embed src="http://www.ebaumsworld.com/player.swf" allowScriptAccess="always" flashvars="id1=81748652" wmode="opaque" width="567" height="345" allowfullscreen="true" />
REGEX模式会是什么样子,我正在使用PHP。
带有xpath的XML解析器也是我的选择