php截取html文章并不破坏html文档结构示例代码
代码语言:php
所属分类:其他
代码描述:php截取html文章并不破坏html文档结构示例代码,一段html文章,php截取部分,返回的依然是部分html文档
代码标签: php 截取 html 文章 不破坏 html 文档 结构 示例 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<?php function truncate_html($html, $fraction) { $doc = new DOMDocument(); @$doc->loadHTML('<?xml encoding="utf-8" ?>' . $html); // 防止HTML解析错误 $xpath = new DOMXPath($doc); $body = $xpath->query('//body')->item(0); // 获取总字符数 $total_length = mb_strlen(strip_tags($html)); $target_length = ceil($total_length * $fraction); // 截取的HTML片段 $truncated_html = ''; $current_length = 0; foreach ($body->childNodes as $node) { $node_length = strlen(strip_tags($doc->saveHTML($node))); if ($current_length + $node_length > $target_length) { // 如果当前节点超过目标长度,则需要部分截取 $remaining_length = $target_length - $current_length; $truncated_html .= truncate_node($doc, $node, $remaining_length); break; } else { // 否则,完全包含当前节点 $truncated_html .= $doc->saveHTML($node); $current_length += $node_length; } } return $truncated_html; } function truncate_node($doc, $node, $length) { $truncated = ''; if ($node->nodeType == XML_TEXT_NODE) { // 如果是文本节点,直接截取 $truncated = mb_substr($node->textContent, 0, $length, 'UTF-8&.........完整代码请登录后点击上方下载按钮下载查看
网友评论0