php各种编码转换实现代码(1/6)
$uc2gbtable = $codetable = $big5_data = $gb_data = '';
$gbkunidic = null;//utf-8 转gb编码
function utf82gb($utfstr)
{
if(function_exists('iconv'))
{
return iconv('utf-8','gbk//ignore',$utfstr);
}
global $uc2gbtable;
$okstr = "";
if(trim($utfstr)=="")
{
return $utfstr;
}
if(empty($uc2gbtable))
{
$filename = dedeinc."/data/gb2312-utf8.dat";
$fp = fopen($filename,"r");
while($l = fgets($fp,15))
{
$uc2gbtable[hexdec(substr($l, 7, 6))] = hexdec(substr($l, 0, 6));
}
fclose($fp);
}
$okstr = "";
$ulen = strlen($utfstr);
for($i=0;$i<$ulen;$i++)
{
$c = $utfstr[$i];
$cb = decbin(ord($utfstr[$i]));
if(strlen($cb)==8)
{
$csize = strpos(decbin(ord($cb)),"0");
for($j=0;$j < $csize;$j++)
{
$i++; $c .= $utfstr[$i];
}
$c = utf82u($c);
if(isset($uc2gbtable[$c]))
{
$c = dechex($uc2gbtable[$c]+0x8080);
$okstr .= chr(hexdec($c[0].$c[1])).chr(hexdec($c[2].$c[3]));
}
else
{
$okstr .= "&#".$c.";";
}
}
else
{
$okstr .= $c;
}
}
$okstr = trim($okstr);
return $okstr;
}
这算是一款比较完美的分页类了,支持表单输入跳转,也支持select跳转分页,同时还支持上10页,下10页偏移分页哦。
下面是一款完整的用户在注册前的ajax验证用户名的实现代码,只要按要求保存就可以了。class wind_page
{
var $page;
//现在所在页
var $total;
//记录总条数
var $totalpage;
//总页树
var $pagesize;
//每页显示条数
var $offset;
//偏移量
var $result;
//记录集合
var $thispage;
//记录总条数 //记录总条数 //记录总条数
var $link;
//连接(记录$_get变量)
var $bar_mun;
//bar显示的页数
var $starttime;
//开始时间
var $bar_last;
//导航条的持续页数
var $bar_mid;
//导航条中间页
var $minpage;
//导航条最小页
var $maxpage;
//导航条最大页
var $key;
//标识分页(一个页面多个分页时用与区分)
var $style;
//输出的风格
var $pre_page_char;
//上一页
var $pre_page_image;
//上一页图形
var $pre_page_char_color;
//上一页字体颜色
var $next_page_char;
//下一页
var $next_page_image;
//下一页图形
var $next_page_char_color;
//下一页字体颜色
var $pre_groud_char;
//上翻中间页数
var $pre_groud_char_color;
//上翻中间页数字体颜色
var $next_groud_char;
//下翻中间页数
var $next_groud_char_color;
//下翻中间页数字体颜色
var $first_page_char;
//首页
var $first_page_char_color;
//首页字体颜色
var $last_page_char;
//尾页
var $last_page_char_color;
//尾页字体颜色
var $html_page_val;
//html当前的页码值
function wind_page($sql, $pagesize = 20, $bar_mun = 10, $style = 1,$this_page = 1,$html_page_val=1,$key = "") //构造函数()
{
$this->starttime = microtime();
$this->pagesize = $pagesize;
//每页显示条数
$this->key = trim($key);
$this->bar_mun = $bar_mun;
$this->style = $style;
$this->html_page_val = $html_page_val;
//html当前的页码值
$this->bar_last = $bar_mun-1;
$this->bar_mid = floor($bar_mun/2);
$this->sql = $sql;
$result = mysql教程_query($this->sql);
$this->total = mysql_num_rows($result);
//记录总条数
$this->totalpage = ceil($this->total/$this->pagesize);
//总页数
//$this->page = ceil($_get[$this->key."page"]);
$this->page = $this_page;
//现在所在页
if ($this->page == "" || $this->page < 1 || !is_numeric($this->page))$this->page = 1;
$this->page = min($this->page, $this->totalpage);
$this->thispage = $this->pagesize;
if ($this->page * $this->pagesize > $this->total) {
$this->thispage = $this->total-($this->page-1) * $this->pagesize;
};
$this->sql .= " limit ".($this->pagesize * ($this->page-1)).", ".$this->pagesize;
//开始读取的条数
//echo "<br>";
$this->result = mysql_query($this->sql);
$this->getvar();
$this->pre_page_char = "上一页";
$this->pre_page_image = "<img src="/images/b_s_prev.gif" border="0" />";
$this->next_page_char = "下一页";
$this->next_page_image = "<img src="/images/b_s_next.gif" border="0" />";
$this->pre_groud_char = "上一组";
$this->next_groud_char = "下一组";}
function getvar() //取得除page外的其他get变量
{
$this->link = "";
foreach($_get as $key => $vaule) {
if (strtolower($key) !== $this->key."page") $this->link .= "&$key=$vaule";
}
}
function pre_page($color="#909090",$sign=0) //上一页
{
if ($this->page > 1) {
return "<a href="index_".sprintf("%02d",$this->page-1).".html" class="ab"><font color="".$this->pre_page_char_color."">".$this->pre_page_char."</font></a>";
} else
{
return "<font color="$color">".$this->pre_page_char."</font>";
}
}
function next_page($color="#909090",$sign=0) //下一页
{
if ($this->page < $this->totalpage) {
return "<a href="index_".sprintf("%02d",$this->page+1).".html" class="ab">".$this->next_page_char."</a>";
} else {
return "<font color="$color">".$this->next_page_char."</font>";
}
}
function pre_groud($char = "<<", $color = "#909090") //上一组
{
if ($this->page <= ($this->bar_mid+1)) {
return "<font color="".$color."">".$this->pre_groud_char."</font>";
//return $this->pre_groud_char;
} else {
$pre_gpage = ($this->page-$this->bar_mid < 0)?1:
$this->page-$this->bar_mid;
return "<a href="index_".sprintf("%02d",$pre_gpage).".html" title="上一组">".$this->pre_groud_char."</a>";
}
}
function next_groud($char = ">>", $color = "#909090") //下一组
{
if (($this->totalpage-$this->page) <= ($this->bar_mid-1)) {
return "<font color="".$color."">".$this->next_groud_char."</font>";
} else {
$next_gpage = ($this->page+$this->bar_mid < $this->totalpage)?$this->page+$this->bar_mid:
$this->totalpage;
return "<a href="index_".sprintf("%02d",$next_gpage).".html" title="下一组" >".$this->next_groud_char."</a>";
}
}
function mun($lcolor = "#ff6633", $acolor = "#ff6633", $left = " ", $right = " ") //数字导航栏
{
$link = "";
$this->minpage = ($this->page-$this->bar_mid < 1) ? 1:($this->page-$this->bar_mid);
$this->maxpage = $this->minpage+$this->bar_last;
if ($this->maxpage > $this->totalpage) {
$this->maxpage = $this->totalpage;
$this->minpage = ($this->maxpage-$this->bar_last < 1) ? 1: $this->maxpage-$this->bar_last;
}
for($i = $this->minpage; $i <= $this->maxpage; $i++)
{
/* 循环输出页码 */
$i = sprintf("%02d",$i);
//不足两位的前面补0
$char = $left.$i.$right;
//导航条左右两边加窄
if ($i == $this->page)
{
/* 假如是当前页则不加链接 */
$link.= "<font color="".$acolor."">".$char."</font>";
}
else
{
//$link .= "<a href="".$_server['php教程_self']."?".$this->key."page=".$i.$this->link."" >".$char."</a>";
$link.= "<a href="index_".$i.".html" >".$char."</a>";
//关键把$link 加在新资料加入之后
}
}
echo "<br>";
return $link;
}
function jump_bar($class = "jump_bar") //下拉跳转
{
$link = "<select name="menu1" onchange="mm_jumpmenu('parent',this,0)" class="$class">";
for($i = $this->minpage; $i <= $this->maxpage; $i++) {
if ($i < 10)$i = "0".$i;
//定义选择不超过10个
if($this->page == $i)
{
/* 假如为当前页码,则选中 */
$link .= "<option value="index_".$i.".html" selected>第".$i."页</option>";
}
else
{
$link .= "<option value="index_".$i.".html">第".$i."页</option>";
}
}
$link .= "</select>";
return $link;
}
function mun_bar() //整条数字导航栏 [<<][<][01][02][03][04][05][06][07][08][09][10][>][>>]
{
//return $this->first_groud().$this->pre_groud().$this->pre_page().$this->mun().$this->next_page().$this->next_groud().$this->last_groud();
return $this->pre_groud()." ".$this->pre_page().$this->mun().$this->next_page()." ".$this->next_groud();
}
function page_button()
{ //整条数字导航栏 [<][01][02][03][04][05][06][07][08][09][10][>]
//return $this->first_groud().$this->pre_groud().$this->pre_page().$this->mun().$this->next_page().$this->next_groud().$this->last_groud();
return $this->pre_page('#909090',1).$this->mun().$this->next_page('#909090',1);
}
function total_bar($coloro = "#000000", $colorn = "red") //统计数字 页次:1/4310 每页:20 共计:4310页 本页:20
{
return "<font color=$coloro>页次:<font color=$colorn>$this->page</font>/$this->totalpage 每页:<font color=$colorn>$this->pagesize</font> 共计:<font color=$colorn>$this->totalpage</font>页 本页:<font color=$colorn>$this->thispage</font></font>";
}
// 整条导航栏
//页次:1/4310 每页:20 共计:4310页 本页:20 [<<][<][01][02][03][04][05][06][07][08][09][10][>][>>]
function page_bar($coloro = "#000000", $colorn = "red") {
return "<table width='100%' border='0' cellspacing='0'>
<tr>
<td width='5%'></td>
<td width='35%'>".$this->total_bar()."</td>
<td width='40%'align='right'>".$this->mun_bar()."</td>
<td width='10%'>".$this->jump_bar()."</td>
<td width='5%'></td>
</tr>
</table>".$this->mm_jumpmenu();
}
function taketime($color = "#000000") //计算执行时间
{
return "<div align='center'><font color=$color>本页执行时间".abs((microtime()-$this->starttime) * 1000)."毫秒</font></div>";
}
function style() //输出分页的样式
{
$style_num = $this->style;
if ($this->totalpage != 0) //如果总页数=0 ,表示无分页
{
switch($style_num) {
case 1:
return $this->page_bar();
//页次:1/4310 每页:20 共计:4310页 本页:20 [<<][<][01][02][03][04][05][06][07][08][09][10][>][>>]
break;
case 2:
echo $this->mun_bar();
//整条数字导航栏 [<<][<][01][02][03][04][05][06][07][08][09][10][>][>>]
break;
case 3:
echo $this->page_button();
//整条数字导航栏 [<][01][02][03][04][05][06][07][08][09][10][>]
break;
}
}
}
function mm_jumpmenu() //网页特效的跳转
{
//window.open(selobj.options[selobj.selectedindex].value,targ);
return "<script language="javascript">
<!--
function mm_jumpmenu(targ,selobj,restore){
if (selobj.selectedindex==0) return;
window.location.href=selobj.options[selobj.selectedindex].value,targ;
if (restore) selobj.selectedindex=0;
}
//-->
</script>";
}
function first_groud($char = " <<", $color = "#000000") {
if ($this->page == 1) {
return "<font color="".$color."">".$char."</font>";
} else {
//$pre_gpage=($this->page-$this->bar_mid<0)?1:$this->page-$this->bar_mid;
$pre_gpage = 1;
return "<a href="".$_server['php_self']."?".$this->key."page=".$pre_gpage.$this->link."" title="上一组"><font color="".$color."">".$char."</font></a>";
}
}
function last_groud($char = " >>", $color = "#000000") {
if ($this->page == $this->totalpage) {
return "<font color="".$color."">".$char."</font>";
} else {
//$pre_gpage=($this->page-$this->bar_mid<0)?1:$this->page-$this->bar_mid;
$pre_gpage = $this->totalpage;
return "<a href="".$_server['php_self']."?".$this->key."page=".$pre_gpage.$this->link."" title="上一组"><font color="".$color."">".$char."</font></a>";
}
}
}
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
<title>ajax用户验证</title>
<style>
body {
font: 12px , arial, helvetica, sans-serif; color: #808080
}
#reg{
width: 600px;
border: 1px dotted #336699;
}
td{font-size:12px;color:}
h1{
height:35px;
font-size:16px;
color:#ffffff;
background-color: #336699;
line-height: 30px;
padding-left:25px;
}.anniu {
border-right: #666666 1px solid; padding-right: 1px; border-top: #ffffff 1px solid; padding-left: 1px; font-size: 9pt; padding-bottom: 1px; border-left: #ffffff 1px solid; cursor: hand; color: #333333; padding-top: 1px; border-bottom: #666666 1px solid; font-family: "宋体"; height: 20px; background-color: #eeeeee
}
.framedivpass{
border: 1px solid #6fbe44;
padding: 2px;
height: 100%;
float: left;
}
.framedivwarn{
border: 1px solid #ff0000;
padding: 2px;
height: 100%;
float: left;
}
</style>
<script language="网页特效" type="text/javascript">
var xmlhttp = false;
try {
xmlhttp = new activexobject("msxml2.xmlhttp");
} catch (e) {
try {
xmlhttp = new activexobject("microsoft.xmlhttp");
} catch (e2) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof xmlhttprequest != 'undefined') {
xmlhttp = new xmlhttprequest();
}
function ajax(data){
xmlhttp.open("get","user_ck.php教程?username="+document.getelementbyid("username").value,true);
xmlhttp.send(null);
document.getelementbyid('username_notice').innerhtml = process_request;//显示状态
xmlhttp.onreadystatechange=function(){
if (4==xmlhttp.readystate){
if (200==xmlhttp.status){
var responsetext = xmlhttp.responsetext;
if (responsetext=="true" ){
ck_user("true");
}
else{
ck_user("false");
}
}else{
alert("发生错误!");
}
}
}
}
function chkusername(obj){
if (checks(obj.value)== false)
{
obj.classname = "framedivwarn";
showinfo("username_notice",msg_un_format);
change_submit("true");
}
else if(obj.value.length<1){
obj.classname = "framedivwarn";
showinfo("username_notice",msg_un_blank);
change_submit("true");
}else if(obj.value.length<3){
obj.classname = "framedivwarn";
showinfo("username_notice",username_shorter);
change_submit("true");
}
else{
//调用ajax函数,向服务器端发送查询
ajax(obj.value);
}}
下面是一款php数字分页类的代码,己经封装好了的代码,需要的朋友可以参考使用一下。分页的主要原理就是获取当前页面,再判断一页多少条记录相除,得出总记录,就这么简单了。
function getnavhtml($pagenum,$pagesize,$rowcount,$navurl){
$pagecount = (int)($rowcount/$pagesize); //总页数
if ($rowcount % $pagesize >0){
$pagecount++;
}
if ($pagenum>$pagecount){
$pagenum = 1;
}
$firstnav = "<a href="{$navurl}page=1">首页</a> ";
$lastnav = "<a href="{$navurl}page={$pagecount}">尾页</a> ";
$prevnav="";
$nextnav="";
if ($pagenum>1){
$navpagenum = $pagenum-1;
$prevnav = "<a href="{$navurl}page={$navpagenum}">上一页</a> ";
}
if ($pagenum<$pagecount && $pagecount>1){
$navpagenum = $pagenum+1;
$nextnav = "<a href="{$navurl}page={$navpagenum}">下一页</a> ";
}
$amongnav="";//关键循环
for ($i=1;$i<=5;$i++){
$navpagenum = $pagenum+ $i-3;
if ($navpagenum>0 && $navpagenum<=$pagecount){
$navcss教程 = $navpagenum == $pagenum?" class="hover"":"";
$amongnav.="<a href="{$navurl}page={$navpagenum}" $navcss>{$navpagenum}</a> ";
}
}
return $firstnav.$prevnav.$amongnav.$nextnav.$lastnav." ".$pagenum."/".$pagecount." 共有[".$rowcount."]条数据";
}
}
/**
* 获取页码导航html
* @param $pagenum:当前页码
* @param $pagesize:每页数量
* @param $rowcount:记录总数
* @param $navurl:链接页面url
*/
$dir = opendir("images");
//列出 images 目录中的文件
while (($file = readdir($dir)) !== false)
{
echo "filename: " . $file . "<br />";
}
closedir($dir);
// 看一下改装的目录浏览实现,使用表格浏览目录的结构
print("<table border="1">n");
// 创建表格的头
print("<tr><font color='red'>n");
print("<th>文件名</th>n");
print("<th>文件的大小</th>n");
print("</font></tr>n");
$mydirectory = opendir("."); // 建立操作目录的句柄
// 读出目录中的每一个子项
while($entryname = readdir($mydirectory))//通过循环,访问目录的每一个文件
{
print("<tr>");
print("<td>$entryname</td>");
print("<td align="right">");
print(filesize($entryname));//返回文件大小
print("</td>");
print("</tr>n");
}
closedir($mydirectory); // 关闭目录
print("</table>n");
相关文章
- 有一种方法,可以不打开网站而直接查看到这个网站的源代码.. 这样可以有效地防止误入恶意网站... 在浏览器地址栏输入: 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
- 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
- 本文实例讲述了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
- 本文介绍了如何延迟javascript代码的加载,加快网页的访问速度。 当一个网站有很多js代码要加载,js代码放置的位置在一定程度上将会影像网页的加载速度,为了让我们的网页加载速度更快,本文总结了一下几个注意点...2013-10-13
- 这篇文章主要介绍了JavaScript实现Base64编码转换的相关资料,非常简单实用,需要的朋友可以参考下...2016-04-25
PHP编码转换函数mb_convert_encoding与iconv用法
文章来实现一个PHP编码转换函数mb_convert_encoding与iconv用法,希望例子能帮助到各位。 将一个短信接口代码从apache迁移到nginx+php-fpm后,发现无法发出短信了,查...2016-11-25- 这篇文章主要介绍了vue项目,代码提交至码云,iconfont的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-30