2017-01-03 79 views
2

你好,我擁有的數據現在存儲在一個變量一個腳本,從網站獲取的HTML數據...HTML DOM解析器 - 讓純文本

//website is built like this: 

<table class="table table-hover"> 
<tr> 
    <td><b>Cover</b></td> 
    <td><b>Platz</b></td> 
    <td><b>Titel</b></td> 
    <td><b>Videolink</b></td> 
</tr> 
<tr> 
    <td><a href="http://www.youtube.com" target="_blank"><img src="youtube.jpg" /></a></td> 
    <td>1</td> 
    <td><a href="http://www.youtube.com" target="_blank">name</a></td> 
    <td><input type="text" onclick="this.select()" id="1" size="45" name="1" value="http://www.youtube.com" /></td> 
</tr><tr> 
<td><a href="http://www.youtube.com2" target="_blank"><img src="youtube.jpg2" /></a></td> 
    <td>1</td> 
    <td><a href="http://www.youtube.com2" target="_blank">name2</a></td> 
    <td><input type="text" onclick="this.select()" id="2" size="45" name="2" value="http://www.youtube.com2" /></td> 
</tr></table> 

PHP

<?php 

include 'core/functions/dom.php'; 
include 'core/init.php'; 

$url = "http://MYWEBSITE"; 
$html = file_get_html($url); 

$theData = array(); 

foreach($html->find('table tr') as $row) { 

$rowData = array(); 
foreach($row->find('td') as $cell) { 

    $rowData[] = $cell->innertext; 
} 

$theData[] = $rowData; 
} 
$list=($theData[2]); 
$name=($list[3]); 
echo $name; 

?> 

! 但是當我贊同它是一個鏈接...

<a href="http://www.youtube.com2" target="_blank">name2</a> 

(你可以看到這個當您查看源代碼)

我需要的只是「NAME2」爲文本,我可以把它放在我的數據庫中!

的另一個問題是,它回聲出一個文本字段。 在那裏,我也只需要文...

<input type="text" onclick="this.select()" id="2" size="45" name="2" value="http://www.youtube.com2" /> 

有我需要的輸入值作爲文本我的數據庫!

+1

http://php.net/manual/en/function.strip-tags.php是這一特定問題的最簡單的方法,但除非你指定的標籤會被保留,也將刪除該圖片。 – jeroen

+0

你需要更清楚地陳述你的問題。我不明白你在問什麼。 – Aaron

+0

與它工作的帶狀標籤。但只有鏈接,因爲我喜歡這個文本。在我的文本輸入字段我想要的值... ...所以文本應該是... http://www.youtube.com – Marius

回答

1

您可以通過使用內置的名爲DOMDocument類達致這。實例化你的對象後,您可以調用該方法getElementsByTagName('td')這將從<td>標籤中獲取價值的數據(非標籤數據)。我添加了一個if條件來忽略空格,因爲<td>標籤中的一些沒有值。

代碼:

<?php 

$dom = new DOMDocument; 
$dom->loadHTML($html); 

$result = $dom->getElementsByTagName('a'); 

foreach ($result as $v) { 

    echo $v->getAttribute('href') . ' ' . $v->nodeValue; 
    echo '<br>'; 

} 

輸出:

http://www.youtube.com 
http://www.youtube.com name 
http://www.youtube.com2 
http://www.youtube.com2 name2 

參見: http://php.net/manual/en/domdocument.getelementsbytagname.php

編輯:

我更新了代碼,因此它輸出了URL標記/錨點&值(如果有)。

+0

$ dom-> loadHTML($ html);我在哪裏輸入我想從中取得html的網站?這裏的$ html是什麼?當我想要價值=「http://www.youtube.com」時,我還需要做什麼? – Marius

+0

'$ html'是源'HTML'所以你可以,如果你想用你的exisiting代碼,只要確保'HTML'源存儲在'$ html'。查看「href」和「a」值的更新答案。 – Kitson88