首页 > php解析Kindeditor中内容分页问题

php解析Kindeditor中内容分页问题

项目要求对编辑中添加的内容可以进行分页,所以把Kindeditor中默认的分页插入字符变成了{{page}}。项目开发语言是PHP

例如content的htmlt代码如下

<p style="text-indent:2em;">
    翰林世家一期即将交房,业主们对自己的新家充满了期待。9月20日下午2点翰林学苑爱之家课堂,将诚邀室内资深设计师、家居配饰大师,围绕个性化家居初体验、家居文化等方面,在翰林世家售楼部为业主提供专享服务,希望能为业主的家装提供一些专业的帮助。
</p>
<p style="text-indent:2em;">
    <strong>2014家居流行趋势解码</strong> 
</p>
<p style="text-indent:2em;">
    智能化的卫浴,异彩纷呈的合成材料,环保、原生态的地板,崇尚自然的天然涂料……舒适的生活可以让人身心放松,现在都市生活让人们对家居环境的要求已经不仅仅是舒适、温馨和实用,而是一种对美好家居生活的向往、对高质量家居品位的不懈追求。如同时尚前沿的巴黎时装秀,今年的家居行业也迎来了新的流行趋势:是潮流达人们们偏爱的新东方主义、流行炫色,还是原色原味、清新自然的原木搭配?翰林世家特别邀请了名家解码家居流行密码,为业主带来2014年的流行元素。
</p>
<p style="text-align:center;">
    <img src="/static/img/blank.gif" data-original="http://hzzxw.b0.upaiyun.com/uploads/20140918/541a528890388.jpg" width="450" height="278" alt="" /> 
</p>
<p style="text-align:left;text-indent:2em;">
    <strong></strong><strong>2014翰林世家交房户型设计</strong> 
</p>
<p style="text-align:left;text-indent:2em;">
    二人世界、浪漫满屋,90方现代简约三口之家,奢华舒适、高端典雅四世同堂;中式风格、地中海风格、欧式风格、美式风格……本期爱之家课堂是翰林世家针对即将交房的户型进行的专场设计,精英设计师以平面图、效果图结合实景作品等形式展示,多种设计风格、多个方案帮您找到满意的装修方案。
</p>
<p style="text-align:left;text-indent:2em;">
    {{page}}
</p>
<p style="text-align:left;text-indent:2em;">
    <strong>2014超级空间整理术</strong> 
</p>
<p style="text-align:left;text-indent:2em;">
    <br />
</p>
<p style="text-align:left;text-indent:2em;">
    超级空间整理,顺势而动。床下的大抽屉可以简单收纳,墙壁上的搁板放置书本、唱片,让卧室成为丰富的娱乐放松空间;阳台变花房,环保又美观……对于空间的整理、规划技术,设计师们可是内行,而资深设计更是深得其法。在本次翰林学苑爱之家家装课堂上,资深设计师对翰林世家的业主居住空间作出规划,设计出魔变空间。
</p>

我采用PHP的explode分离后发现,那个分页特殊的字符串前后是有html标记,会导致html缺少指定的结束符号、或者开始符号。

对于正则本人也只是略懂,哪位大牛能帮忙给个解决方案不,或者能匹配套{{page}}当前和几位的html标记是更好了。


给你一个自动补全的php代码:

/**
* close all open xhtml tags at the end of the string
* @param string $html
* @return string
* @author Milian Wolff
*/
function closetags($html) {
    #put all opened tags into an array
    preg_match_all('#<([a-z]+)(?: .*)?(?<![/|/ ])>#iU', $html, $result);
    $openedtags = $result[1];
    #put all closed tags into an array
    preg_match_all('#</([a-z]+)>#iU', $html, $result);
    $closedtags = $result[1];
    $len_opened = count($openedtags);
    # all tags are closed
    if (count($closedtags) == $len_opened) {
    return $html;
    }
    $openedtags = array_reverse($openedtags);
    # close tags
    for ($i=0; $i < $len_opened; $i++) {
    if (!in_array($openedtags[$i], $closedtags)){
    $html .= '</'.$openedtags[$i].'>';
    } else {
    unset($closedtags[array_search($openedtags[$i], $closedtags)]);
    }
    }
    return $html;
}

使用这个函数就可以将为未关闭的html标签补全,这样就可以避免显示的问题了~

【热门文章】
【热门文章】