PHP实现的一分页工具类代码
总的页数是一个长度一定的木块,这把尺子在这个木块上滑动,前提,尺子的两端不能超出木块:D。发现这么一来要做的事情就是去找这个尺子在木块上的起始点,根据用户给传进来的page变量。哈哈,关键代码下面:
代码如下 | 复制代码 |
/** |
第一种老想法的代码实现:
代码如下 | 复制代码 |
/** |
示例图:
类文件下载:HPage.php (等我这个小类库完成了再一起放上 :D)。
文章截断使用主要是在列表页面时我没有写描述这样只能在文章中截取字符串了,但使用php 自带函数会导致div未结束,从而页面混乱了,那么要如何解决此问题呢?博主写好一篇文章,博客后台一般会在搜索页面或者列表页面给出文章标题和截断了的的文章部分作为进一步阅读的入口。
Function: mb_substr( $str, $start, $length, $encoding )
$str,需要截断的字符串
$start,截断开始处
$length,长度(注意,这个跟mb_strimwidth不同,1就代表一个中文字符)
$encoding,编码,我设为 utf-8
例:截断文章标题,控制在15个文字
代码如下 | 复制代码 |
<?php echo mb_substr('www.111cn.net原创', 0, 15,"utf-8"); ?> |
这样对于纯文本没问题,但是我的是中间有html标签的于是问题来了。怎样截断一篇文章。注意,这篇文章不仅仅是普通的字符串文本,而是包含了各种格式化标签和样式内容的文本。如果处理不当,这些闭合标签无法正常关闭,从而破坏整个文档流。
如果单纯是纯文本,下面这个函数差不多是够用的。
代码如下 | 复制代码 |
<?php /** * 字符串截取,支持中文和其他编码 * * @param string $str 需要转换的字符串 * @param string $start 开始位置 * @param string $length 截取长度 * @param string $charset 编码格式 * @param string $suffix 截断字符串后缀 * @return string */ function substr_ext($str, $start=0, $length, $charset="utf-8", $suffix="") { if(function_exists("mb_substr")){ return mb_substr($str, $start, $length, $charset).$suffix; } elseif(function_exists('iconv_substr')){ return iconv_substr($str,$start,$length,$charset).$suffix; } $re['utf-8'] = "/[x01-x7f]|[xc2-xdf][x80-xbf]|[xe0-xef][x80-xbf]{2}|[xf0-xff][x80-xbf]{3}/"; $re['gb2312'] = "/[x01-x7f]|[xb0-xf7][xa0-xfe]/"; $re['gbk'] = "/[x01-x7f]|[x81-xfe][x40-xfe]/"; $re['big5'] = "/[x01-x7f]|[x81-xfe]([x40-x7e]|xa1-xfe])/"; preg_match_all($re[$charset], $str, $match); $slice = join("",array_slice($match[0], $start, $length)); return $slice.$suffix; } |
但是,如果需要截断是网页中的某部分格式化文本,上面的函数就不够用了。它不具备处理格式化标签的能力。
这时,需要一个新函数,它应该是以上函数的升级加强版,它必须有能力正确的处理标签,下面找到一个
strip_tags() 函数剥去 HTML、XML 以及 PHP 的标签。
例子 1
代码如下 | 复制代码 |
<?php |
输出:
Hello world!
这样就好做了我们只要在上面基础上如下操作
代码如下 | 复制代码 |
<?php 但是发现html不见了这个也不是什么好的解决办法了。 |
接着google 发现cns写了一个支持html截取字符串的函数
代码如下 | 复制代码 |
/**
/** $pre = chr(1); $strcut = ''; $n = $tn = $noc = 0; $t = ord($string[$n]); if ($noc >= $position) $strcut = substr($string, 0, $n); $pos = strrpos($strcut, chr(1)); |
utf-8字符json_encode为变成转成utf16编码,也就是介个样子:
代码如下 | 复制代码 |
$ ./php/bin/php -r 'echo json_encode("中文");' |
可读性降低,最新的php 5.4的json_encode支持了UTF-8编码,可以把中文不编码直接输出。
那低版本怎么办呢?也有办法,封装成一个函数给大家分享一下:
代码如下 | 复制代码 |
function my_json_encode($var) { |
例,利用另一种办法来解决
后台PHP页面(页面编码为UTF-8或者已经把字符转为UTF-8)使用json_encode将PHP中的array数组转为JSON字符串。例如:
代码如下 | 复制代码 |
<?php 查看输出结果为: |
可见即使用UTF8编码的字符,使用json_encode也出现了中文乱码。解决办法是在使用json_encode之前把字符用函数urlencode()处理一下,然后再json_encode,输出结果的时候在用函数urldecode()转回来。具体如下:
代码如下 | 复制代码 |
<?php 查看输出结果为: {“name”:”中文字符串”,”value”:”www.111cn.net”} |
到此,成功地输出了中文字符
下面我们一起来看和篇关于php bcd码压缩-把十进制数字压缩到十六进制数据中实例,希望文章给各位同学带来帮助哦。例,php bcd码压缩-把十进制数字压缩到十六进制数据中
代码如下 | 复制代码 |
<?php /* php bcd码压缩-把十进制数字压缩到十六进制数据中 例如 0091 压缩后 0x00 0x91 */ $string = '0091'; $bytes = Bytes::getBytes($string); print_r($bytes); /* Array ( [0] => 48 [1] => 48 [2] => 57 [3] => 49 ) */ $asc=Bytes::AscToHex($bytes,4); //4位压缩成2位 print_r($asc); /* Array ( [0] => 0 [1] => 145 ) */ echo Bytes::toStr($asc); /* 0091 */ $hex=Bytes::HexToAsc($asc,2); //反操作2位还原成4位 print_r($hex); /* Array ( [0] => 48 [1] => 48 [2] => 57 [3] => 49 ) */ ?> |
例,把十进制数字压缩到十六进制数据中
代码如下 | 复制代码 |
<?php |
QR码详细原理可以参考QR维基百科,中文版介绍比较少,英文版介绍很全面,推荐看英文版的。
Description
PHP QR Code is open source (LGPL) library for generating QR Code, 2-dimensional barcode. Based on libqrencode C library, provides API for creating QR Code barcode images (PNG, JPEG thanks to GD2). Implemented purely in PHP.
Features
•Supports QR Code versions (size) 1-40
•Numeric, Alphanumeric, 8-bit and Kanji encoding.
•Implemented purely in PHP, no external dependencies except GD2
•Exports to PNG, JPEG images, also exports as bit-table
•TCPDF 2-D barcode API integration
•Easy to configure
•Data cache for calculation speed-up
•Debug data dump, error logging, time benchmarking
•Provided merge tool helps deploy library as a one file
•new! API documentation
•new! Over 30 detailed examples
•100% Open Source, LGPL Licensed
Demo
项目地址:http://sourceforge.net/projects/phpqrcode/
Generate fixed size images
* phpqrcode本身未提供固定大小二维码的设置,请参考 http://sourceforge.net/p/phpqrcode/discussion/1111884/thread/f739531a/
代码如下 | 复制代码 |
--- original/phpqrcode/qrimage.php 2010-08-18 07:06:24.000000000 -0700 用法,设置生成的二维码宽高为 500px define('IMAGE_WIDTH', 500); |
相关文章
- 我们这里介绍php与KindEditor编辑器使用时如何利用KindEditor编辑器的分页功能实现文章内容分页,KindEditor编辑器在我们点击分页时会插入代码,我们只要以它为分切符,就...2016-11-25
- 最近接了一个项目,其中有需求要用到jquery分页控件,上网也找到了需要分页控件,各种写法各种用法,都是很复杂,最终决定自己动手写一个jquery分页控件,全当是练练手了。写的不好,还请见谅,本分页控件在chrome测试过,其他的兼容性...2015-10-30
- 有一种方法,可以不打开网站而直接查看到这个网站的源代码.. 这样可以有效地防止误入恶意网站... 在浏览器地址栏输入: view-source:http://...2016-09-20
- <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
- 本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
- 本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
- 本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
- 本文实例讲述了jquery实现的伪分页效果代码。分享给大家供大家参考,具体如下:这里介绍的jquery伪分页效果,在火狐下表现完美,IE全系列下有些问题,引入了jQuery1.7.2插件,代码里有丰富的注释,相信对学习jQuery有不小的帮助,期...2015-10-30
- php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
- php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p> </p> <p> </p> <form name="form1...2016-11-25
- 公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
- 本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
- 其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
- 一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
- 微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
- Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统.这篇文章主要介绍了vue.js 表格分页ajax 异步加载数据的相关资料,需要的朋友可以参考下...2016-10-20
- 本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
- 小编分享了一段简单的php中文转拼音的实现代码,代码简单易懂,适合初学php的同学参考学习。 代码如下 复制代码 <?phpfunction Pinyin($_String...2017-07-06
php导出csv格式数据并将数字转换成文本的思路以及代码分享
php导出csv格式数据实现:先定义一个字符串 存储内容,例如 $exportdata = '规则111,规则222,审222,规222,服2222,规则1,规则2,规则3,匹配字符,设置时间,有效期'."/n";然后对需要保存csv的数组进行foreach循环,例如复制代...2014-06-07- ecshop商品无限级分类代码 function cat_options($spec_cat_id, $arr) { static $cat_options = array(); if (isset($cat_options[$spec_cat_id]))...2016-11-25