共享下我的常用代码
以下东西,都是我自己写的, 我比较懒,就把他全部全部写好, 要用的时候直接放进去.[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("&","<",">",""","
"),$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]] 学习了 谢谢 学习拉。 echo "alert('生成成功');"; 这句改成 echo "<script>alert('生成成功');</script>";
<script> 被过滤了. [(:hug:)] 支持这种共享精神! 不错 支持
学习中。。。。。。。。。。。 不错的原创东西,学习下,谢谢分享![(:smile:)] [(:lol:)]
谢LZ昂.. 好东西!!!谢谢!!
页:
[1]