截断嵌入 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 标签,这些方法可确保生成的文本保持其预期的结构和内容有效性。
以上是如何在不破坏标签的情况下截断嵌入 HTML 的文本?的详细内容。更多信息请关注PHP中文网其他相关文章!