它推出了很多非封閉標籤象下面這樣:如何處理html摘錄?
(strlen($row['body']) > 200 ? substr($row['body'],0,200) . '...' : $row['body'])
而且整個頁面的佈局被打破,如何處理:
<div>
<table>...</table>
的</div>
由這樣的代碼被截斷用它?
它推出了很多非封閉標籤象下面這樣:如何處理html摘錄?
(strlen($row['body']) > 200 ? substr($row['body'],0,200) . '...' : $row['body'])
而且整個頁面的佈局被打破,如何處理:
<div>
<table>...</table>
的</div>
由這樣的代碼被截斷用它?
假設$row['body']
包含要截斷200個可見字符的HTML:
地帶HTML標籤
這是最快的修復,但可能不是你想要的東西:
$body= strip_tags($row['body']);
echo(strlen($body) > 200 ? substr($body,0,200) . '...' : $body);
解析HTML並截斷文本
使用PHP的DOMDocument類,您可以解析HTML,檢查HTML標記中的文本長度,計算內容中文本的長度,並在保留格式良好的HTML時從$row['body']
中的HTML限制字符後刪除任何標記。
您可以顯示如何使用DOMDOcument執行此操作的示例? – JCM 2012-01-26 16:02:32
我假定你已經離開它爲簡潔,但我沒有看到標記
應該
<div>
<table><tr><td>...</td></tr></table>
還可以使用下面的你可能有HTML嵌入在$行[「身體」]
(strlen($row['body']) > 200 ? substr($row['body'],0,200) . '...' : htmlspecialchars($row['body']))
DC
下面是如何創建一個帖子預覽或摘錄塔爲例t包含有效的HTML。它解析使用PHP的DOM文檔的HTML作爲leepowers建議:
如果長度檢查是檢查文本內容的長度,那麼這會更好,但不包括html標籤本身。 – 2013-02-27 18:45:34
同意!但是有人說,有人比我更聰明,「過度優化是萬惡之源」。更簡單的方法是增加$ num_chars以適應更多的實際文本(減去html)。另一個變量和$ node-> textContent的使用會爲你帶來你想要的。 – Morgan 2013-09-12 22:29:58
這是什麼具體到? – 2010-01-04 03:14:05