2012-06-01 89 views
1

我展開/使用子,其中第二子是當按下一個按鈕,激活一個div標籤內冷凝博客文章(因此串聯兩個子)子導致不完全的HTML標籤

的代碼如下所示如下圖所示:

<?php echo substr($f2, 0, 50);?> 
<div id="<?php echo $f4; ?>" class = "hidden"> 
<?php echo substr($f2, 0, 5000);?></div> 

但我的問題是,如果博客文章包含HTML標籤(例如< \ LI>,< \ p>),顯然這組標籤的終止前的初始字符串結尾,則將它導致主要的格式問題。 有沒有用我現在的方法解決的辦法,還是我將需要使用像一個XML樣式表(在這種情況下,請指導我通過它)

編輯:

我已經半完成我的請求使用DOMDocument。

$second = substr($f2, 50, 5000); 
$dom= new DOMDocument(); 
    $dom->loadHTML($second);  
    $xpath = new DOMXPath($dom); 
    $body = $xpath->query('/html/body'); 
$secondoutput = ($dom->saveXml($body->item(0))); 


$first = substr($f2, 0, 50); 
$dom= new DOMDocument(); 
    $dom->loadHTML($first);  
    $xpath = new DOMXPath($dom); 
    $body = $xpath->query('/html/body'); 
$firstoutput = ($dom->saveXml($body->item(0))); 

這是有效的,除了第二個子字符串被調用時,它不再具有以前的格式化,因爲它已被純化。 當第二個子字符串被調用時,有什麼方法可以重新初始化以前的HTML標記嗎?

回答

0

對此問題有不同的解決方案,但substr並不特別合適(如您所述)。 您可以使用正則表達式或HTML解析器。

繼續並從this question複製解決方案。

+0

我編輯了我的帖子 –

0

您可能想要使用Tidy修復截斷的HTML。

+0

你能舉一個例子嗎?請使用 –

+0

我相信你可以在手冊中搜索很多例子。 http://www.php.net/manual/en/tidy.repairstring.php – mateusza

0

您可能想要使用DOMDocument或SimpleHTMLDOM解析整個HTML代碼,然後刪除最後的元素,直到該帖子足夠短。

+0

我不知道如何實際使用這個,我將如何使用它來創建子字符串考慮到html標籤? –