2013-10-09 28 views
2

我正在開發一個項目,我需要從HTML類獲取所有數據。PHP從HTML類獲取文本

<div class="sprofile"> 
    <a href="http://www.cibap.nl/profile/2127/"><b>Jeroen Rinzema</b></a> 
    <br /> 
    <i>Reclame en Media</i> 
    <br /> 
    Klas RMM21C 
    <div class="istatus offline"> 
    Offline 
    </div>     
</div> 

這是我需要從HTML頁面獲得的HTML。但我不知道如何在PHP中選擇這部分HTML文檔。我需要使用的部分是: 的Jeroen Rinzema克拉斯RMM21C

如果你想看到完整的HTML文檔,你可以做到這一點here

我迄今爲止嘗試是:

$url = "http://www.cibap.nl/profile/$username"; 
$html = file_get_html($url); 
foreach($html->find('div.sprofile') as $article){ 
    $item['name'] = $article->find('div.sprofile a b', 0)->plaintext; 
    $item['klas'] = $article->find('div.sprofile', 0)->plaintext; 
} 
echo'done'; 
+3

使用DOM解析器。 –

+0

但我也可以選擇類似(sprofile)的DOM解析器? – Ajeo

+0

你可以通過jQuery發送這部分到一個PHP文件我認爲這兩個文件必須在同一個域) –

回答

0

是否希望將html內容發送到php頁面?爲此,您可以將隱藏的表單元素中的內容包裝在POST中並進行POST。

如果您希望在本頁面上提取html內容,請使用javascript dom操作。你也可以通過這個鏈接http://stackoverflow.com/questions/3808808/how-to-get-element-by-class-in-javascript

1

使用Symfony DomCrawler ComponentCssSelector Component。它提供了一種非常自然的語法,並允許您根據類選擇元素。

如果不是PHP的要求,我可以建議使用nodejs(帶或不帶jQuery)?

+0

最好的將是PHP,但如果jQuery的唯一選擇是。這是沒有問題的 – Ajeo

+0

Symfony的東西是你選擇文本本身,但在我的情況是文本總是不同的,所以我不知道什麼是站在HTML文件 – Ajeo

+0

@MeQube你在你的例子中使用CSS類可以匹配與CssSelector組件。如果您要解析的DOM總是不同的,那麼您無法自動獲得所需的輸出。 – nietonfir