php各种编码转换实现代码(1/6)

 更新时间:2016年11月25日 17:33  点击:1794
我们提供了几种编码转换如有UTF-8 转GB编码 GB转UTF-8编码 Unicode转utf8 unicode url编码转gbk编码函数 GB码转换成Big5码 Big5码转换成GB码 utf8转Unicode等哦。

$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页偏移分页哦。

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 = "&nbsp", $right = "&nbsp") //数字导航栏
    {
        $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()."&nbsp;".$this->pre_page().$this->mun().$this->next_page()."&nbsp;".$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 = "&nbsp;<<", $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 = "&nbsp;>>", $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>";
        }
    }
}

下面是一款完整的用户在注册前的ajax验证用户名的实现代码,只要按要求保存就可以了。

 

<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
*/

opendir() 函数打开一个目录句柄,可由 closedir(),readdir() 和 rewinddir() 使用。 若成功,则该函数返回一个目录流,否则返回 false 以及一个 error。可以通过在函数名前加上 \"@\" 来隐藏 error 的输出。

$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");
[!--infotagslink--]

相关文章

  • 不打开网页直接查看网站的源代码

      有一种方法,可以不打开网站而直接查看到这个网站的源代码..   这样可以有效地防止误入恶意网站...   在浏览器地址栏输入:   view-source:http://...2016-09-20
  • php 调用goolge地图代码

    <?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实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • JS实现自定义简单网页软键盘效果代码

    本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
  • php 取除连续空格与换行代码

    php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • PHP实现清除wordpress里恶意代码

    公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
  • JS实现双击屏幕滚动效果代码

    本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
  • js识别uc浏览器的代码

    其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
  • JS日期加减,日期运算代码

    一、日期减去天数等于第二个日期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
  • PHP开发微信支付的代码分享

    微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
  • PHP常用的小程序代码段

    本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
  • php怎么用拼音 简单的php中文转拼音的实现代码

    小编分享了一段简单的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商品无限级分类代码

    ecshop商品无限级分类代码 function cat_options($spec_cat_id, $arr) { static $cat_options = array(); if (isset($cat_options[$spec_cat_id]))...2016-11-25
  • 几种延迟加载JS代码的方法加快网页的访问速度

    本文介绍了如何延迟javascript代码的加载,加快网页的访问速度。 当一个网站有很多js代码要加载,js代码放置的位置在一定程度上将会影像网页的加载速度,为了让我们的网页加载速度更快,本文总结了一下几个注意点...2013-10-13
  • JavaScript实现Base64编码转换

    这篇文章主要介绍了JavaScript实现Base64编码转换的相关资料,非常简单实用,需要的朋友可以参考下...2016-04-25
  • PHP编码转换函数mb_convert_encoding与iconv用法

    文章来实现一个PHP编码转换函数mb_convert_encoding与iconv用法,希望例子能帮助到各位。 将一个短信接口代码从apache迁移到nginx+php-fpm后,发现无法发出短信了,查...2016-11-25
  • vue项目,代码提交至码云,iconfont的用法说明

    这篇文章主要介绍了vue项目,代码提交至码云,iconfont的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-30