2015-10-01 53 views
3

我需要使用TCPDF和PHP製作PDF生成器。我可以將所有內容寫在PDF上,但這看起來很糟糕。因此,我需要將HTML中的每個產品都放在不同的頁面上。獲取2個元素之間的HTML內容

對於較新的頁面,這很容易。只需使用dom文件在產品周圍找到<div>,將其放入數組中並將其寫入PDF。

不幸的是,不是每個頁面都是一樣的,所以並不是每個頁面都有<div>。此頁面爲例。

'<h3>sample#1</h3> 
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p> 
<img> 
<table> 
</table> 

<h3>sample#2</h3> 
<p>Aenean commodo ligula eget dolor. Aenean massa.</p> 
<img> 
<table> 
</table> 

<h3>sample#3</h3> 
<p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p> 
<img> 
<table> 
</table> 

<h3>sample#4</h3> 
<p>Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.</p> 
<img> 
<table> 
</table>' 

所以我想要得到的,是這樣的:

array (size=4) 
0 => string " 
<h3>sample#1</h3> 
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p> 
<img> 
<table> 
</table>" 
1=> string " 
<h3>sample#2</h3> 
<p>Aenean commodo ligula eget dolor. Aenean massa.</p> 
<img> 
<table> 
</table>" 

我有必要時包括一些到服務器上的文件沒有問題,但最好不。

+0

如果你知道所有的可能性,這些網頁可能看起來,你可以使用正則表達式來提取正是你在所有的情況下需要這個工作的數據... –

回答

5

如果頁面看起來像您的示例,您可以嘗試一個簡單的preg_match_all()。如果某些頁面的結構與您的示例不同,則可以調整正則表達式。 Here是測試功能的好網站。

$html = '<h3>sample#1</h3> 
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p> 
<img> 
<table> 
</table> 

<h3>sample#2</h3> 
<p>Aenean commodo ligula eget dolor. Aenean massa.</p> 
<img> 
<table> 
</table> 

<h3>sample#3</h3> 
<p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p> 
<img> 
<table> 
</table> 

<h3>sample#4</h3> 
<p>Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.</p> 
<img> 
<table> 
</table>'; 


$matches = array(); 
$elements = array(); 

preg_match_all("#<h3>.*?</table>#s" , $html, $matches); 

if(count($matches[0]) > 1) { 
    $elements = $matches[0]; 
} 

echo "<pre>"; 
var_dump($elements); 

OUTPUT:

array(4) { 
    [0]=> 
    string(105) "<h3>sample#1</h3> 
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p> 
<img> 
<table> 
</table>" 
    [1]=> 
    string(95) "<h3>sample#2</h3> 
<p>Aenean commodo ligula eget dolor. Aenean massa.</p> 
<img> 
<table> 
</table>" 
    [2]=> 
    string(133) "<h3>sample#3</h3> 
<p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p> 
<img> 
<table> 
</table>" 
    [3]=> 
    string(116) "<h3>sample#4</h3> 
<p>Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.</p> 
<img> 
<table> 
</table>" 
} 
+0

對於我來說,謝謝 – FlorisdG

+0

不用客氣,我只是編輯了答案,並添加了一個鏈接,您可以在這裏測試,如果有些頁面與您的示例不同 – swidmann