- /**
- * 获取HTML字符串的子串,返回的子串仍然是一个标准的HTML字符串。
- *
- * @param string $str 需要被截断的字符串
- * @param int $length 子串长度,只能是一个近似值,而不是100%等于此长度。
- * @param int start 从哪个位置开始截断
- * @return string
- * @link http://blog.830725.com/post/8.html
- */
- function subHtml($str, $length = 300, $start = 0)
- {
- /* 截取指定的长度 */
- $summary = mb_substr($str, $start, $length, 'utf-8');
- $tidy = new \Tidy();
- /* 修复截取的HTML内容,使其仍是一个标准的XHTML文档。 */
- $str = $tidy->repairString($summary, array('output-xhtml'=>true), 'utf8');
- /* 重新解析前面修复的XHTML内容,获取body标签内的内容。 */
- $tidy->parseString($str, array('output-xhtml'=>true), 'utf8');
- $children = $tidy->body()->child;
- $ret = '';
- foreach($children as $child)
- { $ret .= $child->value; }
- unset($tidy);
- return $ret;
- }
原文地址:http://blog.830725.com/post/html-string-truncate-and-repair.html
转载于:https://blog.51cto.com/caixw/1085655