2013-07-02 69 views
0

我最近需要截斷包含HTML的帖子內容(用於帖子摘錄/摘要等)。這通常是通過手動輸入文章的摘錄來完成的,但對於這個特定的項目,我需要自動完成。將HTML內容截斷爲指定的字符/字數,同時保留標籤

我試圖創建一個簡單的方法,只需要一個字符數和子字符串的內容。但是,這不會一直工作,因爲它可能會截斷HTML標記/屬性中的內容。

如:

<?php 
function truncateText($string, $chars) { return substr($string, 0, $chars); } 

$content = "<div><p>some content</p><a href='http://google.com'>Let's go to google</a></div>";  

echo truncateText($content,40); //returns "<div><p>some content</p><a href='http:/" 

,你可以看到,它會返回一個HTML破碎,這將無法正常渲染。我怎樣才能截斷內容,但保留HTML標籤?

+2

看到這個職位:http://stackoverflow.com/questions/1193500/php-truncate-html-ignoring-tags – 2013-07-02 20:32:08

+0

@Akam喲,修改該功能爲我做了。謝謝!! – kennypu

回答

0

你的方法有很多問題。你想截斷40個字符,然後添加儘可能多的標籤,直到他們被關閉?或者,您是否希望在40處截斷,並根據需要進行修剪以使標籤正常工作?這些標籤是否總計40個字符,或者在計數時被忽略?你可以看到有很多問題。但是,總結中還有一種替代方法:

刪除標籤並截斷文本。摘要通常只是文本的一小部分,是一段簡單的格式。你不想在這裏列出,在大多數情況下,剝離一個或兩個鏈接就可以了。然而,如果你真的想走上這條路,我會推薦閱讀有些DOM parser的html標籤,但要知道怎麼做,你首先需要回答我寫的第一個問題。

0

如果您不關心格式是否從您的文本中刪除,那麼只需通過PHP函數strip-tags()發送字符串,然後再執行其他操作。 Instructions here

+0

感謝您的建議,但這不會因爲需要保留HTML而起作用。 – kennypu

相關問題