Как найти тег объекта с параметром и вставить тег внутри HTML с помощью простого html DOM php

Мне было очень трудно понять простой html dom php. Даже если я прочитаю инструкцию о том, как это сделать. Что касается меня, я только что стал новым в индустрии программирования. Поскольку я искал, как найти тег объекта и вставить, я не могу найти правильный ответ. Поэтому здесь я опубликую свою проблему и надеюсь на правильный ответ. 🙂

Я не могу найти объект этого: http://vodlocker.com/embed-gu09418zgs6y.html

и вот тег объекта с параметром из источника страницы водки. и это то, что я хочу получить.

<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&amp;id=flvplayer&amp;file=http%3A%2F%2F95.211.193.83%3A8777%2Fk6ceg4duoo4pcnokaktshz6a5e6vcg4hy7lzvwxjtd7dcwtb4o6vtdk5fe%2Fv.mp4&amp;provider=http&amp;image=http%3A%2F%2F95.211.193.83%3A8777%2Fi%2F02%2F00142%2Falirtn87xlws.jpg&amp;skin=http%3A%2F%2Fvodlocker.com%2Fplayer%2Fmodieus1.zip&amp;duration=12126&amp;plugins=timeslidertooltipplugin-3h%2Chttp%3A%2F%2Flp.longtailvideo.com%2F5%2Fsharing%2Fsharing.swf&amp;allowfullscreen=always&amp;wmode=opaque&amp;allowscriptaccess=always&amp;stretching=uniform&amp;abouttext=vodLocker&amp;aboutlink=http%3A%2F%2FvodLocker.com&amp;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&amp;timeslidertooltipplugin.pluginmode=HYBRID&amp;sharing.sharing.link=&amp;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&amp;sharing.link=http%3A%2F%2Fvodlocker.com%2Fgu09418zgs6y&amp;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&amp;sharing.pluginmode=HYBRID&amp;controlbar.position=over&amp;dock.position=left&amp;logo.file=http%3A%2F%2Fvodlocker.com%2Fimages%2Fvodjw_logo.png&amp;logo.hide=false&amp;logo.timeout=10&amp;logo.over=1&amp;logo.out=0.8&amp;logo.position=top-right&amp;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); 

В документах, таким образом, можно найти первый экземпляр <object> .

Ваша вторая проблема, однако, в том, что $ html не возвращает код с тегами <object> – блок кода, который вы ищете, не существует.

Если вы ищете значение http://95.211.193.83:8777/k6ceg4duoo4pcnokaktshz6a5e6vcg4hy7lzvwxjtd7ddxdeooarqi7uci/v.mp4 , оно встроено в теги <script> в заголовке, поэтому попробуйте:

 $b = $html->find('script'); 

Затем перебираем массив, который возвращает $b пока вы не получите то, что ищете.

Я думаю, что ваша проблема: $b = $html->find('object')[0]; , Хотя это работает на многих языках, он не будет работать на версиях PHP ниже 5.4. Сделайте это вместо этого:

 $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 будет содержать каждый объект как HTML. $objectHTML[0] будет первым тегом объекта и его содержимым как HTML.