php对内容较长的文章进行分页
require "page.class.php";
$neirong = "内容内容内容内容内容内容内容内容内容内容内容内容内容内容";
$content = file_get_contents($neirong);
$ipage = isset($_GET["ipage"]) ? intval($_GET["ipage"]) : 1;
$CP = new cutpage($content);
$page = $CP->cut_str();
echo $page[$ipage - 1];
echo '' . $CP->pagenav() . '';
class类
page.class.php
<?php
/*
* 长文章分页类
*/
class cutpage{
private $pagestr; //被切分的内容
private $pagearr; //被切分文字的数组格式
private $sum_word; //总字数(UTF-8格式的中文字符也包括)
private $sum_page; //总页数
private $page_word; //一页多少字
private $cut_tag; //自动分页符
private $cut_custom; //手动分页符
private $ipage; //当前切分的页数,第几页
private $url;
function __construct($pagestr,$page_word=1000){
$this->page_word = $page_word;
$this->cut_tag = array("</table>", "</div>", "</p>", "<br/>", "”。", "。", ".", "!", "……", "?", ",");
$this->cut_custom = "{nextpage}";
$tmp_page = isset($_GET["ipage"]) ? intval($_GET["ipage"]) : 1;
$this->ipage = $tmp_page>1?$tmp_page:1;
$this->pagestr = $pagestr;
}
//统计总字数
function get_page_word(){
$this->sum_word = $this->strlen_utf8($this->pagestr);
return $this->sum_word;
}
/* 统计UTF-8编码的字符长度
* 一个中文,一个英文都为一个字
*/
function strlen_utf8($str){
$i = 0;
$count = 0;
$len = strlen ($str);
while ($i < $len){
$chr = ord ($str[$i]);
$count++;
$i++;
if ($i >= $len)
break;
if ($chr & 0x80){
$chr <<= 1;
while ($chr & 0x80) {
$i++;
$chr <<= 1;
}
}
}
return $count;
}
//设置自动分页符号
function set_cut_tag($tag_arr=array()){
$this->cut_tag = $tag_arr;
}
//设置手动分页符
function set_cut_custom($cut_str){
$this->cut_custom = $cut_str;
}
function show_cpage($ipage=0){
$this->cut_str();
$ipage = $ipage ? $ipage:$this->ipage;
return $this->pagearr[$ipage];
}
function cut_str(){
$str_len_word = strlen($this->pagestr); //获取使用strlen得到的字符总数
$i = 0;
if ($str_len_word<=$this->page_word){ //如果总字数小于一页显示字数
$page_arr[$i] = $this->pagestr;
}else{
if (strpos($this->pagestr, $this->cut_custom)){
$page_arr = explode($this->cut_custom, $this->pagestr);
}else{
$str_first = substr($this->pagestr, 0, $this->page_word); //0-page_word个文字 cutStr为func.global中的函数
foreach ($this->cut_tag as $v){
$cut_start = strrpos($str_first, $v); //逆向查找第一个分页符的位置
if ($cut_start){
$page_arr[$i++] = substr($this->pagestr, 0, $cut_start).$v;
$cut_start = $cut_start + strlen($v);
break;
}
}
if (($cut_start+$this->page_word)>=$str_len_word){ //如果超过总字数
$page_arr[$i++] = substr($this->pagestr, $cut_start, $this->page_word);
}else{
while (($cut_start+$this->page_word)<$str_len_word){
foreach ($this->cut_tag as $v){
$str_tmp = substr($this->pagestr, $cut_start, $this->page_word); //取第cut_start个字后的page_word个字符
$cut_tmp = strrpos($str_tmp, $v); //找出从第cut_start个字之后,page_word个字之间,逆向查找第一个分页符的位置
if ($cut_tmp){
$page_arr[$i++] = substr($str_tmp, 0, $cut_tmp).$v;
$cut_start = $cut_start + $cut_tmp + strlen($v);
break;
}
}
}
if (($cut_start+$this->page_word)>$str_len_word){
$page_arr[$i++] = substr($this->pagestr, $cut_start, $this->page_word);
}
}
}
}
$this->sum_page = count($page_arr); //总页数
$this->pagearr = $page_arr;
return $page_arr;
}
//显示上一条,下一条
function pagenav(){
$this->set_url();
$str = '';
//$str .= $this->ipage.'/'.$this->sum_page;
for($i=1;$i<=$this->sum_page;$i++){
if($i==$this->ipage) {
$str.= "<a href='#' class='cur'>".$i."</a> ";
}else{
$str.= "<a href='".$this->url.$i."'>".$i."</a> ";
}
}
return $str;
}
function show_prv_next2(){
$this->set_url();
$str = '';
if ($this->sum_page>1 and $this->ipage>1){
$str.= "<a href='".$this->url.($this->ipage-1)."'>上一页</a> ";
}
if ($this->sum_page>1 and $this->ipage<$this->sum_page){
$str .= "<a href='".$this->url.($this->ipage+1)."'>下一页</a>";
}
return $str;
}
function show_page_select(){
if ($this->sum_page>1){
$str = " <select onchange='location.href=this.options[this.selectedIndex].value'>";
for ($i=1; $i<=$this->sum_page; $i++){
$str.= "<option value='".$this->url.$i."' ".(($this->ipage)==$i ? " selected='selected'":"").">第".$i."页</option>";
}
$str.= "</select>";
}
return $str;
}
function show_page_select_wap(){
if ($this->sum_page>1){
$str = "<select ivalue='".($this->ipage-1)."'>";
for ($i=1; $i<=$this->sum_page; $i++){
$str.= "<option onpick='".$this->url.$i."'>第".$i."节</option>";
}
$str.= "</select>";
}
return $str;
}
function set_url(){
parse_str($_SERVER["QUERY_STRING"], $arr_url);
unset($arr_url["ipage"]);
if (empty($arr_url)){
$str = "ipage=";
}else{
$str = http_build_query($arr_url)."&ipage=";
}
$this->url = "http://".$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"]."?".$str;
}
}
?>
$query = db_select('turnover_estimate', 'e');
$query->fields('e');
$query->addExpression("DATE_FORMAT(date, '%Y-%m-%d')", 'date_format');
$res = $query->execute()->fetchAllAssoc('date_format');
如上代码可以正确执行。但是略有小坑。
$query->addExpression('DATE_FORMAT(date, "%Y-%m-%d"), 'date_format');
注意单引号和双引号,这里的写法会报错。
下面我们来看一篇关于Drupal db_transaction 使用范式详解,希望文章能够让各位理解到Drupal db_transaction的一些规则吧.
$transaction = isset($transaction) ? $transaction : db_transaction();
try {
$ids = array_keys($entities);
db_delete($this->entityInfo['base table'])
->condition($this->idKey, $ids, 'IN')
->execute();
if (isset($this->revisionTable)) {
db_delete($this->revisionTable)
->condition($this->idKey, $ids, 'IN')
->execute();
}
// Reset the cache as soon as the changes have been applied.
$this->resetCache($ids);
foreach ($entities as $id => $entity) {
$this->invoke('delete', $entity);
}
// Ignore slave server temporarily.
db_ignore_slave();
}
catch (Exception $e) {
$transaction->rollback();
watchdog_exception($this->entityType, $e);
throw $e;
}
以上代码片段为使用db_transaction范式。摘抄自entity模块。
下面我们来看一篇关于PHP+mysql+ajax轻量级聊天室教程,希望这篇教程能够帮助到各位朋友.
本文实例讲述了PHP+mysql+ajax轻量级聊天室实现方法。分享给大家供大家参考,具体如下:
做了一个QQ聊天交友网站,想加个聊天的功能,于是做完用PHP做了简单又强大的聊天室
1. 创建mysql数据库表:
create table chat( id bigint AUTO_INCREMENT,username varchar(20), chatdate datetime,msg varchar(500), primary key(id));
2.编写建议连接数据库函数:
dbconnect.php
<?php
function db_connect()
{
date_default_timezone_set("Asia/Shanghai");
$link = mysql_connect("xxx.xxx.xxx.xxx", "databasename", "password")
or die('无法连接: ' . mysql_error());
mysql_select_db("databasename") or die('没有你找到指定数据库');
return true;
}
function quote($strText)
{
$Mstr = addslashes($strText);
return "'" . $Mstr . "'";
}
function isdate($d)
{
$ret = true;
try
{
$x = date("d",$d);
}
catch (Exception $e)
{
$ret = false;
}
echo $x;
return $ret;
}
?>
3. 编写ajax发送和接收函数:
ajax发送函数chat_send_ajax.php
<?php
require_once('dbconnect.php');
db_connect();
$msg = iconv("UTF-8","GB2312",$_GET["msg"]);
$dt = date("Y-m-d H:i:s");
$user = iconv("UTF-8","GB2312",$_GET["name"]);
$sql="INSERT INTO chat(USERNAME,CHATDATE,MSG) " .
"values(" . quote($user) . "," . quote($dt) . "," . quote($msg) . ");";
echo $sql;
$result = mysql_query($sql);
if(!$result)
{
throw new Exception('Query failed: ' . mysql_error());
exit();
}
?>
ajax接收函数chat_recv_ajax.php
<?php
header("Content-Type:text/html;charset=gb2312");
header("Expires: Thu, 01 Jan 1970 00:00:01 GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
require_once('dbconnect.php');
db_connect();
$sql = "SELECT *, date_format(chatdate,'%Y年%m月%d日 %r') as cdt from chat order by ID desc limit 200";
$sql = "SELECT * FROM (" . $sql . ") as ch order by ID";
$result = mysql_query($sql) or die('Query failed: ' . mysql_error());
// Update Row Information
$msg="<table border='0' style='font-size: 10pt; color: white; font-family: verdana, arial;'>";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
{
$msg = $msg . "<tr><td>" . $line["cdt"] . " </td>" .
"<td>" . $line["username"] . ": </td>" .
"<td>" . $line["msg"] . "</td></tr>";
}
$msg=$msg . "</table>";
echo $msg;
?>
4.聊天室页面:
chat.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>聊天页面</title>
<script type="text/javascript">
var t = setInterval(function(){get_chat_msg()},5000);
//
// General Ajax Call
//
var oxmlHttp;
var oxmlHttpSend;
function get_chat_msg()
{
if(typeof XMLHttpRequest != "undefined")
{
oxmlHttp = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
oxmlHttp = new ActiveXObject("Microsoft.XMLHttp");
}
if(oxmlHttp == null)
{
alert("浏览器不支持XML Http Request!");
return;
}
oxmlHttp.onreadystatechange = get_chat_msg_result;
oxmlHttp.open("GET",encodeURI("chat_recv_ajax.php"),true);
oxmlHttp.send(null);
}
function get_chat_msg_result()
{
if(oxmlHttp.readyState==4 || oxmlHttp.readyState=="complete")
{
if (document.getElementById("DIV_CHAT") != null)
{
document.getElementById("DIV_CHAT").innerHTML = oxmlHttp.responseText;
oxmlHttp = null;
}
var scrollDiv = document.getElementById("DIV_CHAT");
scrollDiv.scrollTop = scrollDiv.scrollHeight;
}
}
function set_chat_msg()
{
if(typeof XMLHttpRequest != "undefined")
{
oxmlHttpSend = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
oxmlHttpSend = new ActiveXObject("Microsoft.XMLHttp");
}
if(oxmlHttpSend == null)
{
alert("浏览器不支持XML Http Request!");
return;
}
var url = "chat_send_ajax.php";
var strname="noname";
var strmsg="";
if (document.getElementById("txtname") != null)
{
strname = document.getElementById("txtname").value;
document.getElementById("txtname").readOnly=true;
}
if (document.getElementById("txtmsg") != null)
{
strmsg = document.getElementById("txtmsg").value;
document.getElementById("txtmsg").value = "";
}
url += "?name=" + strname + "&msg=" + strmsg;
oxmlHttpSend.open("GET",encodeURI(url),true);
oxmlHttpSend.send(null);
}
function clickBtn(e)
{
if(window.event.keyCode==13)
{
var id=e.id;
switch(id)
{
case "txtmsg":
document.getElementById("Submit2").click();
window.event.returnValue=false;
break;
}
}
}
function fRandomBy(under, over){
switch(arguments.length){
case 1: return parseInt(Math.random()*under+1);
case 2: return parseInt(Math.random()*(over-under+1) + under);
default: return 0;
}
}
function SetTxtName(){
var i=fRandomBy(10);
if(i==0)document.getElementById('txtname').value='无敌战神';
if(i==1)document.getElementById('txtname').value='令狐冲';
if(i==2)document.getElementById('txtname').value='西门吹雪';
if(i==3)document.getElementById('txtname').value='超级玛丽';
if(i==4)document.getElementById('txtname').value='奥巴马';
if(i==5)document.getElementById('txtname').value='恐怖分子';
if(i==6)document.getElementById('txtname').value='聊斋奇女子';
if(i==7)document.getElementById('txtname').value='天朝?潘?;
if(i==8)document.getElementById('txtname').value='中500万了';
if(i==9)document.getElementById('txtname').value='神级奇葩';
if(i==10)document.getElementById('txtname').value='爱你不是两三天';
}
</script>
</head>
<body onload="SetTxtName();">
<div style="border-right: black thin solid; border-top: black thin solid;
border-left: black thin solid; border-bottom: black thin solid;
background:#fff url('http://www.ihaonet.com/chat/blue.jpg') repeat-x left top;
height: 450px;width: 500px; ">
<table style="width:100%; height:100%">
<tr>
<td colspan="2" style="font-weight: bold; font-size: 16pt; color: white; font-family: verdana, arial;
text-align: center">
聊天窗口--全球最大QQ聊天交友网站</td>
</tr>
<tr>
<td colspan="2" style="font-weight: bold; font-size: 16pt; color: white; font-family: verdana, arial;
text-align: left">
<table style="font-size: 12pt; color: white; font-family: Verdana, Arial;border: white thin solid; ">
<tr>
<td style="width: 100px">
名字:</td>
<td style="width: 100px"><input id="txtname" style="width: 150px" type="text" name="name" maxlength="15" value="匿名" /></td>
</tr>
</table>
</td>
</tr>
<tr>
<td style="vertical-align: middle;" valign="middle" colspan="2">
<div style="width: 480px; height: 300px; border-right: white thin solid; border-top: white thin solid; font-size: 10pt; border-left: white thin solid; border-bottom: white thin solid; font-family: verdana, arial; overflow:scroll; text-align: left;" id="DIV_CHAT">
</div>
</td>
</tr>
<tr>
<td style="width: 310px">
<input id="txtmsg" style="width: 350px" type="text" name="msg" onkeydown="return clickBtn(this)"/></td>
<td style="width: 85px">
<input id="Submit2" style="font-family: verdana, arial" type="button" value="发送" onclick="set_chat_msg()"/></td>
</tr>
<tr>
<td colspan="1" style="font-family: verdana, arial; text-align: center; width: 350px;">
</td>
<td colspan="1" style="width: 85px; font-family: verdana, arial; text-align: center">
</td>
</tr>
</table>
</div>
</body>
</html>
效果图如下:
相关文章
- 我们这里介绍php与KindEditor编辑器使用时如何利用KindEditor编辑器的分页功能实现文章内容分页,KindEditor编辑器在我们点击分页时会插入代码,我们只要以它为分切符,就...2016-11-25
- 最近接了一个项目,其中有需求要用到jquery分页控件,上网也找到了需要分页控件,各种写法各种用法,都是很复杂,最终决定自己动手写一个jquery分页控件,全当是练练手了。写的不好,还请见谅,本分页控件在chrome测试过,其他的兼容性...2015-10-30
- 本文实例讲述了jquery实现的伪分页效果代码。分享给大家供大家参考,具体如下:这里介绍的jquery伪分页效果,在火狐下表现完美,IE全系列下有些问题,引入了jQuery1.7.2插件,代码里有丰富的注释,相信对学习jQuery有不小的帮助,期...2015-10-30
- Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统.这篇文章主要介绍了vue.js 表格分页ajax 异步加载数据的相关资料,需要的朋友可以参考下...2016-10-20
Springboot如何使用mybatis实现拦截SQL分页
这篇文章主要介绍了Springboot使用mybatis实现拦截SQL分页,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-19- 在php中要实现分页比起asp中要简单很多了,我们核心就是直接获取当前页面然后判断每页多少再到数据库中利用limit就可以实现分页查询了,下面我来详细介绍分页类实现程序...2016-11-25
- 本文实例讲述了jquery实现的伪分页效果代码。分享给大家供大家参考,具体如下:这里介绍的jquery伪分页效果,在火狐下表现完美,IE全系列下有些问题,引入了jQuery1.7.2插件,代码里有丰富的注释,相信对学习jQuery有不小的帮助,期...2015-10-30
- 这篇文章主要介绍了基于jquery实现表格无刷新分页,功能实现了前端排序功能,增加了前端搜索功能,感兴趣的小伙伴们可以参考一下...2016-01-08
- 这篇文章主要为大家详细介绍了AngularJS实现分页显示数据库信息效果的相关资料,感兴趣的小伙伴们可以参考一下...2016-07-06
PowerShell读取文件内容、替换文件内容、读取限定行的例子
这篇文章主要介绍了PowerShell读取文件内容、替换文件内容、读取限定行的例子,本文使用3个例子来说明实现这3个需求的操作技巧,需要的朋友可以参考下...2020-06-30- 这篇文章主要为大家详细介绍了vue实现页面打印自动分页的两种方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-29
- 有时候我们从数据库获取的数据量太大,而我们不需要一次性显示那么多的时候,我们就要对数据进行分页处理了,让每页显示不同的数据。...2020-06-25
- 这篇文章主要为大家详细介绍了原生js实现分页效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-09-24
- 最近,在做测试开发平台的时候,需要对测试用例的列表进行后端分页,在实际去写代码和测试的过程中,发现这里面还是有些细节的,故想复盘一下...2021-09-29
- 这篇文章主要为大家详细介绍了vue.js表格分页示例,ajax异步加载数据...2016-10-20
- 本文主要介绍了jQuery中取消后续执行内容的实例,代码通俗易懂。需要的朋友来看下吧...2016-12-02
- 这篇文章主要为大家详细分享了laypage分页控件使用实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-05-20
- /*解决代码高亮太长不换行*/ .syntaxhighlighter{word-break:break-all;} uParse('#newstext', {rootPath: '/e/extend/ueditor/'}) php随机文章 方法1、WC写的高效随...2017-07-06
- ireport默认都是自动分页数据超出页面长度就会自动分到下一页,但有时候业务需要一页只显示固定几行这时候就需要自定义条数了。下面看具体操作吧...2021-10-26
- 在做ajax无刷新时,我想很多朋友都会知道js innerHTML来更改 div 或table里面的值哦. JavaScript的innerHTML 永远不知道你可以改变的内容,一个HTML元素?也许你要...2016-09-20