|
|

<?php
/*****************************************************
* Copyright : www.phpyy.com
* FileName : long_text.inc.php
* Author : 朱武杰 <phpyy@msn.com>
* NickName : 纯粹误会 QQ:44922032
* Version : v1.0
* Description : 长文章截取 longText
* CreatDate : 2005-11-6
* HistoryEdit : 历史修改记录
---------- 第一次修改 -------------------
Author : 朱武杰
Date : 2005-11-8
Summary :
-------------- ------------------------
---------- 第二次修改 -------------------
Author : 朱武杰
Date : 2005-11-11
Summary : 加入XML输出
-------------- ------------------------
*****************************************************/
class longText{
/****
GB2312 0xB0 - 0xF7 0xA0 - 0xFE
GBK 0x81 - 0xFE 0x40 - 0xFE
GB18030 的双字节 0x81 - 0xFE 0x40 - 0x7E, 0x80 - 0xFE
GB18030 的四字节 0x81 - 0xFE 0x30 - 0x39 0x81 - 0xFE 0x30 - 0x39
***/
var $m_encoding ='gbk'; //encoding charset
var $m_text =''; //content
var $m_size =''; //char/page
var $m_mid =''; //middle link number/page
var $m_page =''; //currently page number
var $r_text =''; //return content
var $r_author =''; //return author
var $r_title =''; //return title
var $r_prev =''; //prev page link
var $r_next =''; //next page link
var $r_first =''; //first page link
var $r_last =''; //last page link
var $r_midd =''; //middle page link
var $r_html =''; // return html code;
var $r_xml =''; // return xml code;
//构造HTML风格代码并输出
function htmlConstruct(){
$this-> explodeText();
$this-> textPage ();
$this-> htmlHttp();
$this-> printHtmlCode ();
}
//构造XML风格代码并输出
function xmlConstruct (){
$this-> explodeText();
$this-> textPage ();
$this-> xmlHttp ();
$this-> printXmlCode ();
}
//连接HTML风格代码
function htmlHttp (){
$this-> r_html=
$this->r_first
.$this->r_prev
.$this->r_midd
.$this->r_next
.$this->r_last
."<br/>\n"
."《".$this->r_title."》"
."\n"
.$this->r_author
."<br/>"
."<br/>"
.$this->r_text;
}
//连接XML风格代码
function xmlHttp (){
$this->r_xml=''
."<code>"
."<title>".$this->r_title."</title>\n"
."<author>".$this->r_author."</author>\n"
."<fist>".$this->r_first."</fist>\n"
."<prev>".$this->r_prev."</prev>\n"
."<midd>".$this->r_midd."</midd>\n"
."<next>".$this->r_next."</next>\n"
."<last>".$this->r_last."</last>\n"
."<br/>"
."<text>".$this->r_text."</text>"
."</code>";
}
//输出HTML风格代码
function printHtmlCode (){
echo $this->r_html;
}
//输出XML风格代码
function printXmlCode (){
header('Content-type: text/xml');
echo'<?xml version="1.0" encoding="GB2312"?>';
echo $this->r_xml;
}
//构造类
function longText ($type='xml',$text,$size='200',$mid=5,$encoding='gbk',$title='',$author=''){
if(!function_exists('mb_substr')){
die ('请添加mb(Multi-Byte String Functions)扩展');
}
$this->r_title =htmlspecialchars ($title);
$this->r_author =htmlspecialchars ($author);
$this->m_text =strip_tags($text);
$this->m_text =str_replace(" "," ",$this->m_text);
$this->m_text =str_replace("\r","",$this->m_text);
$this->m_text =str_replace("\n\n","\n",$this->m_text);
$this->m_size =$size+0;
$this->m_mid =$mid+0;
$this->m_encoding =$encoding;
$this->m_page =@$_GET['page']+0;
$this->m_start =$this->m_page * $this->m_size;//start'th position in string
$this->m_textLen =mb_strLen($this->m_text,$this->m_encoding);//the length of string
$this->m_pages =floor($this->m_textLen/$this->m_size);//pages
switch($type){
case 'html':
$this->htmlConstruct();
break;
case 'xml':
$this->xmlConstruct();
break;
default:
$this-> explodeText();
$this-> textPage ();
}
}
//截取代码
function explodeText (){
$this->r_text=nl2br( mb_substr($this->m_text ,$this->m_start,$this->m_size,$this->m_encoding) );
}
//分页
function textPage (){
$this->r_prev =$this->m_page>0?" <a href=\"?page=".( $this->m_page-1)."\"><<</a> ":" << ";
$this->r_next =$this->m_page<$this->m_pages ?" <a href=\"?page=".( $this->m_page+1)."\">>></a> ":" >> ";
$this->r_first =$this->m_page>0?" <a href=\"?page=".(0)."\">|<<</a>":"|<<";
$this->r_last =$this->m_page<$this->m_pages ?" <a href=\"?page=".( $this->m_pages )."\">>>|</a> ":">>| ";
$begin=$this->m_page-ceil($this->m_mid/2);
if($begin<0){
$begin=0;
}
$end=$this->m_page+$this->m_mid-ceil($this->m_mid/2);
if($end>$this->m_pages){
$end=$this->m_pages;
}
for($i=$begin;$i<$end;$i++){
$this->r_midd.=$i==$this->m_page?" ".($i+1)." ":" <a href=\"?page=$i\">".($i+1)."</a> ";
}
}
}
////////////// XML test (XML 测试) //////////////////////
///*
error_reporting(2047);
$filename="第一次亲密接触.txt";
$size=200;
$mid=5;
$text=file_Get_contents($filename);
$obj = new longText ('xml',$text,$size,$mid,'gbk','第一次亲密接触','痞子蔡');
//*/
////////////// HTML test (HTML 测试) //////////////////////
/*
error_reporting(2047);
$filename="第一次亲密接触.txt";
$size=200;
$mid=5;
$text=file_Get_contents($filename);
$r=array_sum(explode(" ",microtime()));
$obj = new longText ('html',$text,$size,$mid,'gbk','第一次亲密接触','痞子蔡');
$r=(array_sum(explode(" ",microtime()))-$r) ." 秒 ";
echo "<br/>".$r;
*/
?> |
|