2013-08-01 60 views
1

我很抱歉,如果標題在這裏混淆的解釋是:插入一個div通過DOM文檔到內容,從遠程站點獲得

說,我們有遠程頁面像remotesite.com/page1.html,我們使用的功能file_get_contents獲得其源,然後我們使用DOMDocument將它打印到我們的頁面

$url = "remotesite.com/page1.html"; 
$html = file_get_contents($url); 
$doc = new DOMDocument(); // create DOMDocument 
libxml_use_internal_errors(true); 
$doc->loadHTML($html); // load HTML you can add $html 
//here we do some edits to remove or add contents 

之前編輯這個來源我想補充以下內容股利在打印前:

<div style="float: right; padding-right: 2px;"><a class="open_event_tab" target="_blank" href="some-hard-coded-text-here_'+content+'_title_'+lshtitle+'_event_'+id+'.html" >open event</a></div> 

以下是我已經試過,但href的軟編碼的部分('+content+'_title_'+lshtitle+'_event_'+id+')不工作

我知道下面我的代碼可能看起來愚蠢的,但很抱歉我沒有在PHP足夠的知識

function createDivNode($doc) { 
$divNode = $doc->createElement('div'); 
$divNode->setAttribute('style', 'float: right; padding-right: 2px;'); 
$aNode = $doc->createElement('a', 'openEvent'); 
$aNode->setAttribute('class', 'open_event_tab'); 
$aNode->setAttribute('target', '_blank'); 
$aNode->setAttribute('href', 'some-hard-coded-text-here_'+content+'_title_'+lshtitle+'_event_'+id+'.html'); 
$divNode->appendChild($aNode); 
return $divNode; 

}

,我想通過源迴路從遠程站點必須讓每一個td看起來像下面的一個,只是關閉它

前添加DIV研究
<td colspan="2"> 
    <b>Video </b> 
    <span class="section">Sports</span><b>: </b> 
    <span id="category466" class="category">Motor Sports</span> 

    //here i want to add my div 
</td> 

6小時,我能不知道這一點,因爲我在學習階段,所以我決定在這裏問別人這個有幫助的社區

+0

小格式化走一段很長的路要走....你正在尋找jQuery函數是.append()。 –

回答

1

現在仍然搞不清楚你的問題,但我認爲,要添加/追加每td內動態div,如果是這樣的話,那麼你可以試試這個(至少,你」會得到一個想法,這是非常乾淨)

var content = 'someContent', lshtitle = 'someTitle', id = 'anId'; 
var attr = { 
    'class' : 'open_event_tab', 
    'target' : '_blank', 
    'href' : 'some-hard-coded-text-here_' + content + '_title_' + lshtitle + '_event_' + id + '.html', 
    'text' : 'open event' 
}; 
var link = $('<a/>', attr); 
var div = $('<div/>', { 'style' : 'float:right;padding-right:2px;' }).append(link); 

$('#myTable td').append(div); 

DEMO.

更新:(問題以下給出混亂,所以更新的答案)

只需下載Simple HTML DOM Perser和(documentation here

include('simple_html_dom.php'); 
    $html = file_get_html('remotesite.com/page1.html'); 
    foreach($html->find('table td') as $td) { 
     $td->innertext = $td->innertext . '<div>New Div</div>'; 
    } 

此外,只修改td小號那些有class=category

foreach($html->find('table td.category') as $td) { 
     $td->innertext = $td->innertext . '<div>New Div</div>'; 
    } 

和你做。請注意0​​,這只是一個例子,希望你可以根據你的需要來製作。實例的

可能的結果:

<table> 
    <tbody> 
     <tr> 
      <td colspan="2"> 
       <b>Video </b> <span class="section">Sports</span><b>: </b> <span id="category466" class="category">Motor Sports</span> 
       <div>New Div</div> 
      </td> 
     </tr> 
     <tr> 
      <td colspan="2"> 
       <b>Video </b> <span class="section">Sports</span><b>: </b> <span id="category466" class="category">Motor Sports</span> 
       <div>New Div</div> 
      </td> 
     </tr> 
    </tbody> 
</table> 
+0

是的,你確切地得到了我的想法,但我已經做了這個jquery我想要這個方法的PHP等效這是因爲你知道這個jquery方法''div'將不會被搜索引擎看到,這是問題 –

+0

@mirandakerry,對不起!您的問題非常混亂,請問您可以編輯/改述您的問題,並刪除所有不必要的JavaScript代碼,只發布相關的PHP代碼? –

+0

完成可以請你幫我解決 –

0

JQUERY

,如果你想插入格在每個TD使用追加()

$('td').append('<div>Test</div>'); 

的端部在每個TD使用開始預先考慮

$('td').prepend('<div>Test</div>'); 

欲瞭解更多信息jquery website

+0

但我想它在PHP不jQuery –

+0

http://www.php.net/manual/en/domnode.appendchild.php –