项目要求对编辑中添加的内容可以进行分页,所以把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" src="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标记是更好了。
黄舟2017-04-10 15:01:56
给你一个自动补全的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标签补全,这样就可以避免显示的问题了~