[英]How to find object tag with param, and embed tag inside HTML using simple html DOM php
我发现我很难理解php的简单html dom。 即使我阅读了有关操作方法的说明。 对于我来说,我只是编程行业的新手。 当我一直在寻找如何找到对象标签和嵌入时,我找不到正确的答案。 因此,在这里,我将发布我的问题并希望找到正确的答案。 :)
我找不到此对象: http : //vodlocker.com/embed-gu09418zgs6y.html
这是来自vodlocker页面源的带有param的对象标签。 这就是我想要得到的。
<object type="application/x-shockwave-flash" data="http://vodlocker.com/player/player.swf" width="100%" height="100%" bgcolor="#000000" id="flvplayer" name="flvplayer" tabindex="0" __idm_id__="937985">
<param name="allowfullscreen" value="true"><param name="allowscriptaccess" value="always">
<param name="seamlesstabbing" value="true">
<param name="wmode" value="opaque"><param name="flashvars" value="netstreambasepath=http%3A%2F%2Fvodlocker.com%2Fembed-gu09418zgs6y.html&id=flvplayer&file=http%3A%2F%2F95.211.193.83%3A8777%2Fk6ceg4duoo4pcnokaktshz6a5e6vcg4hy7lzvwxjtd7dcwtb4o6vtdk5fe%2Fv.mp4&provider=http&image=http%3A%2F%2F95.211.193.83%3A8777%2Fi%2F02%2F00142%2Falirtn87xlws.jpg&skin=http%3A%2F%2Fvodlocker.com%2Fplayer%2Fmodieus1.zip&duration=12126&plugins=timeslidertooltipplugin-3h%2Chttp%3A%2F%2Flp.longtailvideo.com%2F5%2Fsharing%2Fsharing.swf&allowfullscreen=always&wmode=opaque&allowscriptaccess=always&stretching=uniform&abouttext=vodLocker&aboutlink=http%3A%2F%2FvodLocker.com&timeslidertooltipplugin.preview=%5B%5BJSON%5D%5D%7B%22enabled%22%3Atrue%2C%22path%22%3A%22http%3A%2F%2F95.211.193.83%3A8777%2Fi%2F02%2F00142%2F%22%2C%22prefix%22%3A%22alirtn87xlws%22%2C%22frequency%22%3A%22485%22%7D&timeslidertooltipplugin.pluginmode=HYBRID&sharing.sharing.link=&sharing.sharing.code=%253CIFRAME%2520SRC%253D%2522http%253A%252F%252Fvodlocker.com%252Fembed-gu09418zgs6y-720x400.html%2522%2520FRAMEBORDER%253D0%2520MARGINWIDTH%253D0%2520MARGINHEIGHT%253D0%2520SCROLLING%253DNO%2520WIDTH%253D720%2520HEIGHT%253D%253E%253C%252FIFRAME%253E&sharing.link=http%3A%2F%2Fvodlocker.com%2Fgu09418zgs6y&sharing.code=%253CIFRAME%2520SRC%253D%2522http%253A%252F%252Fvodlocker.com%252Fembed-gu09418zgs6y-640x360.html%2522%2520FRAMEBORDER%253D0%2520MARGINWIDTH%253D0%2520MARGINHEIGHT%253D0%2520SCROLLING%253DNO%2520WIDTH%253D640%2520HEIGHT%253D360%253E%253C%252FIFRAME%253E&sharing.pluginmode=HYBRID&controlbar.position=over&dock.position=left&logo.file=http%3A%2F%2Fvodlocker.com%2Fimages%2Fvodjw_logo.png&logo.hide=false&logo.timeout=10&logo.over=1&logo.out=0.8&logo.position=top-right&logo.link=http%3A%2F%2FVodlocker.com">
</object>
这是我的代码。 这是行不通的。 我不知道为什么。 在包含嵌入的其他网站上也是如此。 它也不起作用。
include "include/simple_html_dom.php";
$a = "http://vodlocker.com/embed-gu09418zgs6y.html";
$html = file_get_html($a);
$b = $html->find('object')[0];
echo $b;
我认为您的问题是$b = $html->find('object')[0];
。 尽管它可以在多种语言中运行,但在低于5.4的PHP版本上将无法使用。 改为这样做:
$b = $html->find('object'); $b = $b[0];
我个人使用DOMDocument:
$dom = new DOMDocument;
@$dom->loadHTMLFile('http://vodlocker.com/embed-gu09418zgs6y.html');
if($objs = $dom->getElementsByTagName('object')){
foreach($objs as $o){
// $o is each <object> $objectHTML[] = $dom->saveHTML($o);
foreach($o->childNodes as $p){
if(preg_match('/^param$/i', $p->nodeName)){
// $p is each <param> in loop
}
}
}
}
我在哪里注释掉$objectHTML[] = $dom->saveHTML($o);
, $objectHTML
Array会将每个Object包含为HTML。 $objectHTML[0]
将是第一个对象标记,其内容为HTML。
看起来有两个问题。 首先,我相信您想要的是:
$b = $html->find('object', 0);
根据文档,这是查找<object>
标记的第一个实例的方法。
但是,您的第二个问题是$ html不返回带有<object>
标记的任何代码-您正在搜索的代码块不存在。
如果您要查找的是http://95.211.193.83:8777/k6ceg4duoo4pcnokaktshz6a5e6vcg4hy7lzvwxjtd7ddxdeooarqi7uci/v.mp4
值,则该值嵌入在标题的<script>
标记中,请尝试:
$b = $html->find('script');
然后循环遍历$b
返回的数组,直到获得所需的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.