截斷嵌入HTML 的文字
處理包含HTML 標籤的文字時,必須確保在截斷期間進行正確處理,以避免破壞標籤或顯示無效內容。以下是如何在保持HTML 完整性的同時截斷文字:
PHP 實作:
以下PHP 函數使用正規表示式來解析HTML 並維護一個開啟的堆疊標籤:
function printTruncated($maxLength, $html, $isUtf8 = true) { ... }
此函數掃描HTML 輸入,識別標籤和字元實體。它確保標籤正確關閉並將字元實體計為單一字元。這種方法可確保截斷發生在有效點,而不會破壞任何 HTML 結構。
用法範例:
printTruncated(10, '<b><Hello&gt;</b> <img src="world.png" alt="" /> world!'); // Outputs: 'Hello<b></b> <img src="world.png" alt="" />'
Python 實作:
像 BeautifulSoup 這樣的 HTML解析庫可以幫助完成這個任務Python:
from bs4 import BeautifulSoup, NavigableString def truncate_html(text, max_length): soup = BeautifulSoup(text, 'lxml') truncated = soup.new_tag("div") tail = soup.new_string('') node_len = 0 for node in soup.children: if isinstance(node, NavigableString): node_len += len(node) if node_len <= max_length: truncated.append(node) else: tail.append(node.string[:max_length - node_len]) break else: node_len += len(str(node)) truncated.append(node) return str(truncated) + str(tail)
用法示例:
print(truncate_html('<b><Hello&gt;</b> <img src="world.png" alt="" /> world!', 10)) # Outputs: 'Hello<b></b> <img src="world.png" alt="" />'
結論:
透過在截斷,這些方法可確保產生的文字保持其預期結構和內容有效性。
以上是如何在不破壞標籤的情況下截斷嵌入 HTML 的文字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!