岁月联盟 - 技术社区 - BBS.SYUE.COM's Archiver

xlight 发表于 2007-9-13 12:20

共享下我的常用代码

以下东西,都是我自己写的, 我比较懒,就把他全部全部写好, 要用的时候直接放进去.

[font=黑体][b]一. 分页[/b][/font]

1. class.php[code]/*动态或ajax分页  
默认分页传递参数是page
这里的js分页函数默认为dopage()
eg1. 传递 test.php?page=*&tag=*
$p=new pages($curpage,$pages,'text.php','no','tag=类别')
echo $p->showpage();
eg2. ajax分页
$p=new pages($curpage,$pages,'text.php','yes');
echo $p->showpage();
*/
class pages{
        var $curpage;//当前页
        var $pages;//总页数
        var $url;//php页面
        var $ajax;//是否ajax分页,值为yes则ajax分页,值为no,则动态分页
        var $mark;//另一个参数名称;
        function pages($curpage,$pages,$url,$ajax='no',$mark=''){
                $this->curpage=intval($curpage);
                $this->pages=$pages;
                $this->url=$url;
                $this->ajax=$ajax;
                $this->mark=$mark;
        }
        function showpage(){  //每页显示10个页码
    if($this->ajax=='yes'){
            return $this->showajaxpage();
    }
    else{
            return $this->showphppage();
    }
        }
        function showphppage(){
                $pagenav='';
                $begin=$this->curpage-4;
                $end=$this->curpage+5;
                if($this->curpage<=4){
                        $begin=1;
                        $end=10;
                }
                if($this->curpage > $this->pages-10){
                        $begin=$this->pages-10;
                        $end=$this->pages;
                }
                if($begin<1)$begin=1;
                if($end>$this->pages)$end=$this->pages;
                for($i=$begin;$i<=$end;$i++){
                        if($i==$this->curpage){
                                $pagenav.="$i ";
                        }
                        else{
                                $pagenav.=empty($this->mark)?" url?page=$i\">$i ":" url?page=$i&$this->mark\">$i ";
                                //$pagenav.="url?page=$i&$this->mark\">$i ";
                        }
                }
                $pagenav.=" 共".$this->pages."页";
                return $pagenav;                 
        }
        function showajaxpage(){
                $pagenav='';
                $begin=$this->curpage-4;
                $end=$this->curpage+5;
                if($this->curpage<=4){
                        $begin=1;
                        $end=10;
                }
                if($this->curpage > $this->pages-10){
                        $begin=$this->pages-10;
                        $end=$this->pages;
                }
                if($begin<1)$begin=1;
                if($end>$this->pages)$end=$this->pages;
                for($i=$begin;$i<=$end;$i++){
                        if($i==$this->curpage){
                                $pagenav.=" $i ";
                        }
                        else{
                                $pagenav.=empty($this->mark)?" $i ":" mark')\">$i ";
                        }
                }
                $pagenav.=" 共".$this->pages."页";
                return $pagenav;               
        }
}[/code]2. ajaxpage.js[code]function xml(){
        var xml='';
        if(window.XMLHttpRequest){
                xml=new XMLHttpRequest();
        }
        else if(window.ActiveXObject){
                xml=new ActiveXObject("Microsoft.XMLHttp");
        }
        if(!xml){
                alert("创建xmlhttp失败!");
                return false;
        }
        return xml;
}

//分页ajax开始
//str2不是单独的一个值 如: str2为 tag=1
function dopage(str1,str2){
        if(str2==''){
                changepage('index.php?page='+str1);
        }
        else{
                changepage('index.php?page='+str1+'&'+str2);
        }
}
var xp=false;
function changepage(addr){
        xp=xml();
        xp.onreadystatechange=propage;
        xp.open("GET",addr,true);
        xp.send(null);
}

function propage(){
        if(xp.readyState==4){
                if(xp.status==200){
                        document.body.innerHTML=xp.responseText;
                }
                else{
                        alert('页面不正常');
                }
        }
}[/code]使用方法:
如: index.php 页面[code]< script language='javascript' src='ajaxpage.js' >< /script >
<!--如果不需要ajax分页,上面的js不必包含进来-->
<?php
//这里写从数据库选出的内容 (不举例了)

//分页开始
//用法 类里已经介绍了.
$p=new pages($page,$pagenum,'index.php','yes');
echo $p->showpage();
?>[/code][b]二.生成静态[/b]
php代码
大家自己都可以扩展.[code]class html{
        function __construct($url,$path,$str1='',$str2=''){
                $this->url=basename($url,".php"); //如:blog.php
                $this->path=$path;//相对路径 如:  ../blog/
                $this->str1=$str1;     //$str1:如:tag=1 如果只有一个参数, 就是page=1之类
                $this->str2=$str2;     //$str2:如:page=2
                $this->target=$url;     //目标文件,要生成静态的php文件 如:http://localhost/blog/log/blog.php
                $this->name=$this->url;       //生成静态的名字(包括路径)
                if($this->str1!=''){
                        $this->target.="?".$this->str1;
                        $this->tmp=explode("=",$this->str1);
                        $this->name.="-".$this->tmp[1];
                }
                if($this->str2!=''){
                        $this->target.="&".$this->str2;
                        $this->tmp2=explode("=",$this->str2);
                        $this->name.="-".$this->tmp2[1];
                }
                $this->name.=".html";
                $this->name=$this->path.$this->name;
               
        }
        function createhtml(){
               
                ob_start();
                //require_once($this->target);
                @readfile($this->target);
                $cons=ob_get_contents();
                ob_end_clean();
                $fp=fopen($this->name,"wb") or die("静态页面打开失败");
                fwrite($fp,$cons);
                fclose($fp);
        }
}[/code]使用方法:[code]<?
......

//blog是我的博客程序文件夹,在站点根目录下
$base="http://".$_SERVER['HTTP_HOST'];
$html=new html($base.'/blog/log/blog.php','../log/','id='.$row['lid']);
$html->createhtml();
echo "alert('生成成功');";
......

?>[/code][b]三.长文章自动分页[/b]
# 最近做站需求的, 大家参考下[code]<?php
require_once('class_db.php'); //包含数据库操作类的页面
$db=new op_db();
$result=$db->db_query("select * from test where id='1'");
$row=$db->db_fetch($result);
$content=str_replace("\n","
",$row['content']);//替换换行符
$c=explode('
',$content); //以
标签为分割点, 返回数组.
$count=count($c); //总行数
$pagesize=5;//每页显示的行数
$pagenum=ceil($count/$pagesize);
$page=isset($_GET['page'])?intval($_GET['page']):1;
if($page > $pagenum)$page=$pagenum;
if($page < 1)$page=1;
$start=($page-1)*$pagesize;
$end=$start+$pagesize;
for($i=$start;$i < $end;$i++){
        echo $c[$i]."
";
}
echo '

';
//下面的分页类与 一. 分页 里一样.  直接调用就行了
$p=new pages($page,$pagenum,'index.php','no');
echo $p->showpage();
?>[/code]php截取中文字符串长度:[code]<?php
function ubb($str){
        $str=str_replace(array("&","<",">","\"","\n"),array("&amp","&lt","&gt","&quot","
"),$str);
  return $str;
}

//截取中文字符串,用substr会出现半字符乱码

//截取中英文字符串(gb2312);
function gbk_substr($str,$len)
{
    for($i = 0;$i <$len;$i++)
    {
        if ($i >=0 AND $i <$len)
        {
            if(ord(substr($str,$i,1)) > 0xa1)  
                $result_str.=substr($str,$i,2);
            else
                $result_str.=substr($str,$i,1);
        }
        if(ord(substr($str,$i,1)) > 0xa1)
            $i++;
    }
    if(strlen($str)<=$len)
        return $result_str;
    else
        return $result_str."...";
}

//截取中英文字符串 utf-8
function utf_substr($str,$len)
{
for($i=0;$i<$len;$i++)
{
$temp_str=substr($str,0,1);
if(ord($temp_str) > 127)
{
$i++;
if($i<$len)
{
$new_str[]=substr($str,0,3);
$str=substr($str,3);
}
}
else
{
$new_str[]=substr($str,0,1);
$str=substr($str,1);
}
}
return join($new_str);
}

//截取字符串end  
?>[/code]

[[i] 本帖最后由 xlight 于 2007-10-24 10:05 编辑 [/i]]

sisk 发表于 2007-9-13 14:10

学习了 谢谢

猪猪 发表于 2007-9-13 15:45

学习拉。

xlight 发表于 2007-9-14 08:34

echo "alert('生成成功');";  这句改成 echo "<script>alert('生成成功');</script>";
<script> 被过滤了.

周郎 发表于 2007-9-14 09:20

[(:hug:)]   支持这种共享精神!

孤獨的狼 发表于 2007-9-24 18:18

不错   支持
学习中。。。。。。。。。。。

zoorer 发表于 2007-10-4 16:28

不错的原创东西,学习下,谢谢分享![(:smile:)]

Atten.Tion 发表于 2007-10-5 14:24

[(:lol:)]

谢LZ昂..

mywolf 发表于 2008-4-21 14:45

好东西!!!谢谢!!

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.