gb2312汉字截取乱码 UTF8 中文乱码 汉字截取乱码 PHP截取汉字乱码

bywzy 发表于 程序设计 分类,
0

最近的一段PHP程序,被编码问题搞得头晕,一会是中文乱码,一会是PHP乱码
一会是文件的编码,一会是数据库乱码,还有汉字的截取乱码
所以现在总结一下:
1.首先要文件本身的编码和网页内容的编码一致,如果文件保存的UTF-8格式。
在PHP中: header('Content-Type:text/html;charset=utf-8');//避免输出乱码
在HTML中:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  数据库读取部分:mysql_query("set names utf8");
如果文件是(gb2312)ANSI格式
相应的地方都换成gb2312
2.以下转发一个通用UTF8,GB2312的截取函数

程序代码 程序代码

<?php

/********************************************************************
*   cut_string.php
*        ——————————
*    Date        : May 19, 2008
*    Copyright    : ycsznet
*    Mail        :    ycsznet@gmail.com
*    cut_str(字符串,  截取长度,  开始长度, 编码);
*    编码默认为 utf-8
*    开始长度默认为 0
*    作用:截取中文字符.
*
*
*********************************************************************/

function cut_str($string, $sublen, $start = 0, $code = 'UTF-8')
{
    if($code == 'UTF-8')
    {
        $pa = "/[x01-x7f]|[xc2-xdf][x80-xbf]|xe0[xa0-xbf][x80-xbf]|[xe1-xef][x80-xbf][x80-xbf]|xf0[x90-xbf][x80-xbf][x80-xbf]|[xf1-xf7][x80-xbf][x80-xbf][x80-xbf]/";
        preg_match_all($pa, $string, $t_string);

        if(count($t_string[0]) – $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen))."…";
        return join('', array_slice($t_string[0], $start, $sublen));
    }
    else
    {
        $start  = $start*2;
        $sublen = $sublen*2;
        $strlen = strlen($string);
        $tmpstr = '';
        for($i=0; $i<$strlen; $i++)
        {
            if($i>=$start && $i<($start+$sublen))
            {
            if(ord(substr($string, $i, 1))>129) $tmpstr.= substr($string, $i, 2);
            else $tmpstr.= substr($string, $i, 1);
            }
            if(ord(substr($string, $i, 1))>129) $i++;
        }
        if(strlen($tmpstr)<$strlen ) $tmpstr.= "…";
        return $tmpstr;
    }
}

?>


3.共享一个UTF8 GB2312 GB5 批量转换的小工具:
下载文件 点击下载批量转换工具
友情提醒:
a.转换前务必正确选择好相应的编码,并保留备份
b.如需用DW等工具进行文件中的字符替换,请先替换,再转换文件格式。

phpwind6.0 贴子顶层广告 论坛顶楼

bywzy 发表于 程序设计 分类,
0

phpwind6.0 自带了广告插件,可不支持帖子顶层显示.只能用笨的办法改代码了
打开  template/wind/read.htm
查找以下代码:
<input class="btn" type="button" value="删除选定回复" onclick="sendmsg(this.form.action,this.form);" />
<!–
EOT;
}print <<<EOT
–>
</div>
以这个</div>下边插入以下代码

程序代码 程序代码

<!–
EOT;
if($read[lou] ==0){print <<<EOT
–>
<div>你的广告代码粘在这里</div>
<!–
EOT;
}print <<<EOT
–>


需要在几楼显示,就把read[lou] ==0  中的“0”修改成几

html包含文件 静态网页调用别的网页的代码 include包含

bywzy 发表于 程序设计 分类,
10

建网站有好多时候在每一个网页都要使用同一的重复的地方!

如每页的导航条、版权信息等!

这些修改时都是要统一修改的…而如果照每页每页的修改的话简直是…

而这些在asp 以及cgi php等中可以使用include、require 等之类的调用。

而绝大多数不支持程序的HTML静态空间或者大家不会编程的怎么办……

呵现在就告诉大家一条在html网页中也可以实用文件调用的超级简短代码…

<!–webbot bot="Include" U-Include="../文件名.htm" TAG="BODY" –>

呵…快适用到你的网页中吧!!让你的网站建起来更快更容易!!

而且而且这条代码可以远程调用噢!!!即如

http://www.ycsznet.com之类的调用耶!!!

很多网站采用Shtml页面include外部文件

EG:

index.shtml页面代码
<!–#include file="top.htm"–>

top.htm页面代码
<div style="background:#FF0000;"><h1>静态页面也可以包含文件</h1></div>

二级联动菜单 动态关联菜单 JS菜单 联动省市代码 二级菜单JS联动

bywzy 发表于 程序设计 分类,
0

这个二级菜单JS联动以前写程序时学习用的,一直保存在自己桌面上,今天清理文件是
想把它删了,所以就贴上来了。

HTML代码


[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

CSS form 空行 CSS IE空行 css布局 空行删除

bywzy 发表于 程序设计 分类,
0

今天修改盐城二手网站界面时,遇到一个郁闷的问题。CSS定义的用户登录面版。
在firefox下显示正常,可在IE浏览器中,面板下边多出了空行。查了半天CSS都
没找到原因,后来换表格布局。还是有空行。一步一步测试,最后发现问题就在
Form上,Form也要设置格式?上网查了一下,一共找了三种方式:
第一种:在css文件中定义:
/*- form去除空行 ————————— */
form {
margin-bottom: 0px;
}
第二种:基本表格排版的,注意插入位置
将form标签放在table下,tr,td之上,可以删除form之间的空行。
第三种:直接在后边定义样式。
<form name="checkUser" action="checklogin.php" method="post" onSubmit="return checklogin(this)" style="margin:0;padding:0;">

3002 : 文件无法被打开 PJBLOG 3002错误另类问题

bywzy 发表于 程序设计 分类,
0

因为网站经常被挂马,可能服务器存在漏洞,于是想对自己的这个小站单独设置一下IIS权限,
iis6.0在虚拟主机设置好权限后,再对文件夹权限设置。最后打开网站出现:
3002 : 文件无法被打开
一开始是以为那边权限设置引起的,上网查查了。可在网上找来找去。基本上都是我自己以前
写的那个关于备份引起的问题。
后来,我改成动态模式,发现网站正常。
再改回静态模式,细查,发现有部分日志可以打开。一定是文章有问题了,于是重新生成所有
日志。还是没有用!
最后连到远程服务器一查看,发现POST和CACHE文件夹权限没有问题,但其中的部分文件日
期不是最新的(刚才重新生成过,应该都是最新的),点一个文件,发现没有权限操作。
添加也无法添加,最后点所有权设置后,重新打开权限,继承父,替代子,OK!
3002 : 文件无法被打开问题小结:
1.重新上传或重新生成POST和CACHE目录中的文件。
2.检查这两个目录的权限

php url 重定向 PHP URL 跳转 PHP 转向 重定向URL

bywzy 发表于 程序设计 分类,
1

PHP 实现URL跳转 重定向 主要有以下三种方式:
方法一:
<?php
  $urlstr=array(
   "showform.php?id=43",
  "showform.php?id=27",
  "showform.php?id=59");
  mt_srand();
  $url=$urlstr[mt_rand(0,2)];产生随机数
  echo $url;
  header(sprintf("Location: %s", $url));
  ?>

方法二(javascript脚本):
<?php echo "<script>window.location =\"$PHP_SELF\";</script>";?>

方法三(刷新):
<?php echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0;URL=index.php\">";?>

php上传类 文件上传PHP 父窗口传值 PHP上传文件 上传加水印

bywzy 发表于 程序设计 分类,
0
程序代码 程序代码

<?php
session_start();
error_reporting(E_ALL^E_NOTICE);//去除变量为空时的错误
$uptypes=array('image/jpg',  //上传文件类型列表
'image/jpeg',
'image/png',
'image/pjpeg',
'image/gif',
'image/bmp',
'application/x-shockwave-flash',
'image/x-png');

$max_file_size=20000000;   //上传文件大小限制, 单位BYTE
$destination_folder="up/"; //上传文件路径
$watermark=1;   //是否附加水印(1为加水印,其他为不加水印);
$watertype=1;   //水印类型(1为文字,2为图片)
$waterposition=1;   //水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中);
$waterstring="www.yctwohand.com"; //水印字符串
$waterimg="xplore.gif";  //水印图片
$imgpreview=1;   //是否生成预览图(1为生成,其他为不生成);
$imgsmallsize=100; //缩略图大小定义
?>
<html>
<head>
<title>www.yctwohand.cn picupload</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">body,td{font-family:tahoma,verdana,arial;font-size:11px;line-height:15px;background-color:white;color:#666666;margin-left:20px;}
strong{font-size:12px;}
a:link{color:#0066CC;}
a:hover{color:#FF6600;}
a:visited{color:#003366;}
a:active{color:#9DCC00;}
table.itable{}
td.irows{height:20px;}</style>
</head>
<body>
<form enctype="multipart/form-data" method="post" name="upform">
<input name="upfile" type="file" size="50 style="width:200;border:1 solid #9a9999; font-size:9pt; background-color:#ffffff">
<input type="submit" value="上传" style="width:30;border:1 solid #9a9999; font-size:9pt; background-color:#ffffff" size="17" onClick="parent.document.getElementById('picname').value=forms[0].upfile.value;forms[0].submit();">
</form>

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!is_uploaded_file($_FILES["upfile"][tmp_name]))
//是否存在文件
{  
echo "<font color='red'>文件不存在!</font>";
exit;
}

$file = $_FILES["upfile"];
if($max_file_size < $file["size"])
//检查文件大小
{
echo "<font color='red'>文件太大!</font>";
exit;
  }

if(!in_array($file["type"], $uptypes))
//检查文件类型
{
echo "<font color='red'>只能上传图像文件或Flash!</font>";
exit;  
}

if(!file_exists($destination_folder))
mkdir($destination_folder);

$filename=$file["tmp_name"];
$image_size = getimagesize($filename);  
$pinfo=pathinfo($file["name"]);
$ftype=$pinfo[extension];
$destination = $destination_folder.time().".".$ftype;
if (file_exists($destination) && $overwrite != true)
{
     echo "<font color='red'>同名文件已经存在了!</a>";
     exit;
  }
  
if(!move_uploaded_file ($filename, $destination))
{
   echo "<font color='red'>移动文件出错!</a>";
     exit;
  }

$pinfo=pathinfo($destination);
$fname=$pinfo[basename];
//echo " <font color=red>已经成功上传</font><br>文件名: <font color=blue>".$destination_folder.$fname."</font>";
echo " <font color=red>已经成功上传</font>  ";
echo " 宽度:".$image_size[0];
echo " 长度:".$image_size[1];
if($watermark==1)
{
$iinfo=getimagesize($destination,$iinfo);
$nimage=imagecreatetruecolor($image_size[0],$image_size[1]);
$white=imagecolorallocate($nimage,255,255,255);
$black=imagecolorallocate($nimage,0,0,0);
$red=imagecolorallocate($nimage,255,0,0);
imagefill($nimage,0,0,$white);
switch ($iinfo[2])
{
case 1:
$simage =imagecreatefromgif($destination);
break;
case 2:
$simage =imagecreatefromjpeg($destination);
break;
case 3:
$simage =imagecreatefrompng($destination);
break;
case 6:
$simage =imagecreatefromwbmp($destination);
break;
default:
die("<font color='red'>不能上传此类型文件!</a>");
exit;
}

imagecopy($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]);
imagefilledrectangle($nimage,1,$image_size[1]-15,80,$image_size[1],$white);

switch($watertype)
{
case 1:  //加水印字符串
imagestring($nimage,2,3,$image_size[1]-15,$waterstring,$black);
break;
case 2:  //加水印图片
$simage1 =imagecreatefromgif("xplore.gif");
imagecopy($nimage,$simage1,0,0,0,0,85,15);
imagedestroy($simage1);
break;
}  

switch ($iinfo[2])
{
case 1:
//imagegif($nimage, $destination);
imagejpeg($nimage, $destination);
break;
case 2:
imagejpeg($nimage, $destination);
break;
case 3:
imagepng($nimage, $destination);
break;
case 6:
imagewbmp($nimage, $destination);
//imagejpeg($nimage, $destination);
break;
}

//覆盖原上传文件
imagedestroy($nimage);
imagedestroy($simage);

//缩图大小
$n=$image_size[0]/$image_size[1];
if($n>=1)
    {
      if($image_size[0]>$imgsmallsize)
        {
          $image_size[0]=$imgsmallsize;
          $image_size[1]=$imgsmallsize/$n;
         }
     }
else
    {
     if($image_size[1]>$imgsmallsize)

        {
        $image_size[1]=$imgsmallsize;
        $image_size[0]=$imgsmallsize*$n;
        }
}




}

if($imgpreview==1)
{
echo "<br>图片预览:<br>";
echo "<a href=\"".$destination."\" target='_blank'><img src=\"".$destination."\" width=".($image_size[0])." height=".($image_size[1]);
echo " alt=\"图片预览:\r文件名:".$destination."\r上传时间:\" border='0'></a>";
//echo "<javascript>parent.document.getElementById('picname').value="."</javascript>"
//echo " <script>parent.document.getElementById('picname').value=fgdgf</script> "

if(!session_is_registered("Goodspicname"))
    {
     session_register("Goodspicname");
    }
$_session["Goodspicname"]=$destination;
echo $_session["Goodspicname"];
>}
}
?>
</body>
</html>


表单验证 正则表达式实例 Email验证 电话号码验证 中文汉字验证

xyj 发表于 程序设计 分类,
0

正则表达式用于字符串处理、表单验证等场合,实用高效。
现将一些常用的表达式收集于此,以备不时之需。

匹配中文字符的正则表达式: [\u4e00-\u9fa5]
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

匹配双字节字符(包括汉字在内):[^\x00-\xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

匹配空白行的正则表达式:\n\s*\r
评注:可以用来删除空白行

匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? />
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

匹配首尾空白字符的正则表达式:^\s*|\s*$
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式

匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
评注:表单验证时很实用

匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求

匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用

匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}
评注:匹配形式如 0511-4405222 或 021-87888822

匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始

匹配中国邮政编码:[1-9]\d{5}(?!\d)
评注:中国邮政编码为6位数字

匹配身份证:\d{15}|\d{18}
评注:中国的身份证为15位或18位

匹配ip地址:\d+\.\d+\.\d+\.\d+
评注:提取ip地址时有用

匹配特定数字:
^[1-9]\d*$    //匹配正整数
^-[1-9]\d*$   //匹配负整数
^-?[1-9]\d*$   //匹配整数
^[1-9]\d*|0$  //匹配非负整数(正整数 + 0)
^-[1-9]\d*|0$   //匹配非正整数(负整数 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$   //匹配正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$  //匹配负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$  //匹配浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$   //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$  //匹配非正浮点数(负浮点数 + 0)
评注:处理大量数据时有用,具体应用时注意修正

匹配特定字符串:
^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
^\w+$  //匹配由数字、26个英文字母或者下划线组成的字符串
评注:最基本也是最常用的一些表达式

原载地址:http://lifesinger.3322.org/myblog/?p=185

EditPlus .bak文件 去除自动备份 bak

bywzy 发表于 程序设计 分类,
0

最近用EditPlus2.3.1写PHP代码.因为不想把BAK文件上传到空间
和提交到SVN服务器,所以经常手工删除EditPlus产生.bak备份文件
于是找到一下EditPlus2.3.1的参数设置,配置一下就OK了.
打开菜单栏上的:工具(T)->参数选择(P)->文件
取消“保存时自动创建备份文件”前的复选框中选择状态即可.