2015-11-19 59 views
0

所以我開始在刮刮的世界裏這麼好,直到我在我的追求中遇到了巨大的障礙。需要幫助,試圖從物體上刮擦

所以我不知道它有多可能,但我試圖從這段代碼中刮掉一些標記爲「THISTEXT」的文本。

<div id="mainclass"> 
<object type="application/x-shockwave-flash" height="400" width="100%" id="live_embed_player_flash" data="http://www.websiteexample.com/channel=THISTEXT" bgcolor="#d7d7d7"> 
    <param name="allowFullScreen" value="true" /> 
    <param name="allowScriptAccess" value="always" /> 
    <param name="allowNetworking" value="all" /> 
    <param name="movie" value="http://www.websiteexample.com/live_embed_player.swf" /> 
    <param name="flashvars" value="hostname=www.websiteexample.com&channel=THISTEXT&auto_play=false&start_volume=100" /> 
</object> 

到目前爲止,我已經成功地刮下了ID,但是這就是我碰了壁。任何人都可以幫助我,將不勝感激!

我當前的代碼可以在這裏

function getElementByIdAsString($url, $id, $pretty = true) 
{ 
    $doc = new DOMDocument(); 
    @$doc->loadHTMLFile($url); 

    if(!$doc) { 
     throw new Exception("Failed to load $url"); 
    } 
    $element = $doc->getElementById($id); 
    if(!$element) { 
     throw new Exception("An element with id $id was not found"); 
    } 
    if($pretty) { 
     $doc->formatOutput = true; 
    } 
    return $doc->saveXML($element); 
} 
$finalcontent = getElementByIdAsString('http://examplewebsite.com', 'mainclass'); 
print_r ($finalcontent); 

回答

0

發現我已經重寫你的榜樣,並增加了一些方法來提取信息 - 這是不漂亮,但它給你,你需要的信息。

$html = ' 
<div id="mainclass"> 
<object type="application/x-shockwave-flash" height="400" width="100%" id="live_embed_player_flash" data="http://www.websiteexample.com/channel=THISTEXT" bgcolor="#d7d7d7"> 
    <param name="allowFullScreen" value="true" /> 
    <param name="allowScriptAccess" value="always" /> 
    <param name="allowNetworking" value="all" /> 
    <param name="movie" value="http://www.websiteexample.com/live_embed_player.swf" /> 
    <param name="flashvars" value="hostname=www.websiteexample.com&channel=THISTEXT&auto_play=false&start_volume=100" /> 
</object>'; 

function getElementByIdAsString($html, $id, $pretty = true) { 
    $doc = new DOMDocument(); 
    @$doc->loadHTML($html); // changed this from loadHTMLFile() 

    if(!$doc) { 
     throw new Exception("Failed to load $url"); 
    } 
    $element = $doc->getElementById($id); 
    if(!$element) { 
     throw new Exception("An element with id $id was not found"); 
    } 

    // get all object tags 
    $objects = $element->getElementsByTagName('object'); // return node list 

    // take the the value of the data attribute from the first object tag 
    $data = $objects->item(0)->getAttributeNode('data')->value; 

    // cut away the unnecessary parts and return the info 
    return substr($data, strpos($data, '=')+1); 

} 

// call it: 
$finalcontent = getElementByIdAsString($html, 'mainclass'); 

print_r ($finalcontent); 

在這個例子中,我使用的是一個html字符串,而不是像你這樣的文件。實施時請考慮這一點。

Sincerly

+0

您好,非常感謝您的幫助!所以我試圖實現這一點,但我已經將$ html更改爲'http://www.url.com',並導致頁面出錯並變白。有任何想法嗎? – Jamie

+0

甚至嘗試將其還原爲$ url,然後將我的url放置在$ finalcontent底部區域中。沒有運氣。 – Jamie

+0

嗨,我把'loadHTMLFile()'方法改爲'loadHTML()',也許這是問題。 –