| 
 | 
	
 
 
  ckeditor有个分页的按钮,能够插入分页符,但这只是在编辑时显示的效果而已,要真正实现分页,还需要其它语言,这里使用php采取一种方法来实现分页,当然还有其它的方法可以实现。 
  这里使用的方法是:在显示的页面读取数据后,根据ckeditor插入的分页代码将内容分成几部分存放在数据中,ckeditor源码中插入的分页代码是: 
 
<div style="page-break-after: always;"><span style="display: none;"> </span></div> 
  在火狐中插入的代码也是如此,但是如果是在ie中编辑,则插入的代码是: 
 
<div style="page-break-after: always"><span style="display: none"> </span></div> 
  因此,在将内容转为数组时,使用正则表达式进行匹配以防止不同浏览器保存的内容不一致。匹配的正则表达式如下: 
 
"/<div style=\"page-break-after: always;?\">\s*<span style=\"display: none;?\"> <\/span>\s*<\/div>/" 
  我在测试时,<div style="page-break-after: always;">与<span style="display: none;">之间被添加换行符,所以用了“\s*”进行匹配,在后边的</span>与</div>之间也用了“\s*”进行匹配以防万一。将此功能写成函数,如下: 
 
/** 
* 获取文章内容(当前分页) 
*  
* @param string $content 文章内容 
* @param integer $page 页数 
* @return array 
*/ 
function get_article_content($content, $page=1){ 
$page = $page ? intval($page) : 1; 
$article = array( 
'info' => array(), 
'pages' => 1 
); 
if(!empty($content)){ 
$pattern = "/<div style=\"page-break-after: always;?\">\s*<span style=\"display: none;?\"> <\/span>\s*<\/div>/"; 
$contents = preg_split($pattern, $content); 
$article['pages'] = count($contents); 
($page > $article['pages']) && $page = $article['pages']; 
$article['info'] = $contents[$page - 1]; 
} 
return $article; 
} |   
 
 
 
 | 
  
 |