浏览模式: 标准 | 列表分类:网站|PHP学习

中文字符截取防乱码

先看段代码

PHP代码
  1. <?php     
  2.   
  3. $len = 15;        
  4.   
  5. $str = "这个新闻或是文章的标题很长,需要只显示前面一些字,后面用...来代替";     
  6. echo strlen($str)<=$len ? $str : (substr($str,0,$len).chr(0)."...");   
  7. ?>  

chr(0)相关知识:
null是什么都没有,而chr(0)的值是0。表示成16进制是0x00,表示成二进制是00000000
虽然chr(0)不会显示出什么,但是他是一个字符。
当汉字被截断时,根据编码规则他总是要把后边的其他字符拉过来一起作为汉字解释,这就是出现乱码的原因。而值为0x81到0xff与0x00组合始终都显示为“空”
根据这一特点,在substr的结果后面补上一个chr(0),就可以防止出现乱码了

淡水ps:
如果是UTF-8,UTF-8中的汉字是3个字节的,截取的长度尽量去3的倍数,以避免乱码的产生

Tags: 乱码

heredoc和phpwind的模板技术

heredoc和注释的灵活运用

» 阅读全文

Tags: 模板

CI的数据库字符集问题解决

哈哈,不需要什么设置了

只要用svn到最近版本就ok了

在config的database.php多了

PHP代码
  1. $db['default']['char_set'] = "utf8";   
  2. $db['default']['dbcollat'] = "utf8_general_ci";  

 

淡水正好用utf8,不用再改了.

Tags: codeigniter

PHP5中的时间相差八小时的解决办法

PHP5系列版本新增了时区设置,默认为格林威治时间,与中国所在的东8区正好相差8个小时

方法1:
       找到php.ini中的“;date.timezone =”这行,将“;”去掉,改成“date.timezone = PRC”(PRC:People's Republic of China 中华人民共和国),重启Apache,问题解决。

方法2:
        在php5以及起以上的版本,要输出本地的时间(限中国),可以这么写代码:
PHP代码
  1. <?php   
  2. date_default_timezone_set('Asia/Shanghai');   
  3. echo date('Y-m-d H:i:s');   
  4. ?>   

也可以这样写代码:
PHP代码
  1. <?php   
  2. date_default_timezone_set('Asia/Chongqing');   
  3. echo date('Y-m-d H:i:s');   
  4. ?>   
下次再有人问,就直接发这个地址给他。^_^

Tags: 时间

1:N关系时的一句sql查询(未完善)

这篇日志被加密了,请输入密码后查看。

实现 301 转向的几个方法

如果需要做网址转向,一般上在 php 用 header() 实现的转向是 302:

PHP代码
  1. header("Location: http://www.newaddress.com/");  

301 及 302 同样可以做到网址的转向,但分别在于 301 是永久的转向,而 302 是暂时性质的转向。这个分别对于使用者来说是没有分别的,但对于 search engine 就有分别了。Google 推荐网站管理员当转换网址时用 301 转向。而以下分别是透过 .htaccess、PHP 及 ASP 实现 301 转向的方法,而假设新 domain 是 newdomain.com:

.htaccess

在网站的根目录建立一个 .htaccess 档案,并加入以下内容:

RewriteEngine On

RewriteRule ^(.*)$ http://www.newdomain.com/ [R=301,L]

PHP

在 index.php 的最顶加入以下几行:

PHP代码
  1. <?php   
  2. header("HTTP/1.1 301 Moved Permanently");   
  3. header("Location: http://www.newdomain.com/");   
  4. exit();   
  5. ?>   

 

ASP

 

在 index.asp 或 default.asp 的最顶加入以下几行:

XML/HTML代码
  1. <%   
  2. Response.Status="301 Moved Permanently"  
  3. Response.AddHeader "Location","http://www.newdomain.com/"   
  4. Response.End   
  5. %>  

 

Tags: 301, seo

PHP 分割中文

PHP 内建的 substr 函式可以分割文字,但要分割的文字如果包括有中文字往往会遇到问题,这可以用 mb_substr() 来做。mb_substr() 的用法与 substr() 很相似,只是在 mb_substr() 最后要加入多一个参数,以设定字符串的编码,但要先让 PHP 支援 mbstring 才可以。

在编译 PHP 时加入 --enable-mbstring 选择就可以加入 mbstring 模块了。以下是 mb_substr() 的使用方法:

 

PHP代码
  1. <?php   
  2. $string = '这是测试用的中文字';   
  3. $string = mb_substr($string, -1, 3, 'gb2312');   
  4. echo $string// 会输出 '中文字'   
  5. ?>    

以上的第三行要注意,将 gb2312 修改成中文字所用的编码,例如 UTF-8。淡水牢骚:国内多数idc都是windows的系统,而且好多函数不支持.

Tags: substr, mb_substr

设定 PHP mail 的 Return Path

在 PHP 内用 mail() 发出邮件时,如果没有指定 Return Path,系统便会以预设的电邮地址代替 (例如 admin@localhost 这类)。以下是一个常见的错误:

PHP代码
  1. <?php   
  2. $header"From:My Name<my_name@mydomain.com>";   
  3. $header.= "Reply-To: My Name<my_name@mydomain.com>";   
  4. $header.= "Return-Path: My Name<my_name@mydomain.com>";   
  5. mail($to$subject$email_body$header);   
  6. ?>  

 

以上设定了所发出的邮件的 From 内容,但这是不够的,只要查看所发出邮件的 header,会发现有一个 Return-Path 显示系统的预设电邮。因为现时 spam 非常猖獗,很多 email server 会这类 email 档掉或者标示成 spam,将以上程序码改成这档便可以避免这个问题:

PHP代码
  1. <?php   
  2. $header"From:My Name<my_name@mydomain.com>";   
  3. mail($to$subject$email_body$header);   
  4. ?>  

Tags: mail()

通过gzip来压缩js文件

又是来自咕噜咕噜。为什么要压缩js文件?很明显,压缩后,文件个头小了,下载就快了,网页也就能在更短的时间内呈现在我们的面前,正常情况下,gzip对js的压缩比能达到3:1左右,以ext-all.js为例,源文件大小:463k,经过gzip压缩后的个头为125k,几乎到了4:1。

PHP代码
  1. <?php    
  2.     //参数可以是数组或者字符串   
  3.     gzip_file("ext-all.js");   
  4.     
  5.     function gzip_file($file_s){   
  6.         if(!is_array($file_s)){   
  7.             $files[] = $file_s;   
  8.         }   
  9.         else{   
  10.             $files = $file_s;   
  11.         }   
  12.     header("Expires:".gmdate("D, d M Y H:i:s", time()+15360000)."GMT");    
  13.     header("Cache-Control: max-age=315360000");    
  14.     $mtime = filemtime($file);    
  15.     $gmt_mtime = gmdate(‘D, d M Y H:i:s’, $mtime) . ‘ GMT’;    
  16.     header("Last-Modified:" . $gmt_mtime);    
  17.     ob_start(‘ob_gzhandler’);   
  18.     foreach($files as $file){   
  19.     $ext = array_pop(explode(‘.’, $file));    
  20.     switch ($ext){    
  21.     case ‘css’:    
  22.      header("Content-type: text/css");    
  23.      break;    
  24.     case ‘js’ :    
  25.      header("Content-type: text/javascript");    
  26.      break;    
  27.     case ‘gif’:    
  28.      header("Content-type: image/gif");    
  29.      break;    
  30.     case ‘jpg’:    
  31.      header("Content-type: image/jpeg");    
  32.      break;    
  33.     case ‘png’:    
  34.      header("Content-type: image/png");    
  35.      break;    
  36.     default:    
  37.      header("Content-type: text/plain");    
  38.     }    
  39.     echo implode(”, file($file));    
  40.     }   
  41.     ob_end_flush();    
  42. }   
  43. ?>   

假设将上面的代码存储为ext-all.php
那么引用的时候只需

PHP代码
  1. include("ext-all.php")  

就能实现对ext-all.js的压缩,当然前提是服务端支持zlib。

Tags: gzip

SPAW Editor 一款支持PHP的编辑器

一个免费开源的项目。有asp.net , php 2个版本 自带上传功能  。大小: 18.88 K
尺寸: 500 x 125
浏览: 27 次
点击打开新窗口浏览全图

SPAW Editor 2. 特点介绍:

  1. 支持tab功能,意味着一个编辑器可以同时编辑好几个文档。越来越像常用的编辑器了,哈哈。
  2. 浮动的工具栏,想怎么拖就怎么拖。
  3. 窗口任意缩放……没有想法了
  4. 含有API接口,可以方便的进行二次开发。
  5. 支持 Opera, Safari, Firefox, Mozilla, Netscape 等等,还有更多吗?
  6. 可以方便更换主题。
  7. 文档管理器,任意上传。
  8. 多语言支持,当然有我们可爱的母语中文咯。

这么强大的编辑器,也就区区三四百kb,精简一下应该更令人兴奋。

使用方法:

开头插入

PHP代码
  1. <?php   
  2. include(”../spaw.inc.php”);   
  3. ?>  

需要编辑器的地方插入,其中spaw1就是你表单的标识,如果是编辑就再加入一个内容的函数

PHP代码
  1. <?php   
  2.   $spaw1 = new SpawEditor(”spaw1″);   
  3.   $spaw1->show();   
  4. ?>  

就这么简单。配置文件在 config 目录中,具体的设置查自带的文档吧

php版本:  http://sourceforge.net/project/showfiles.php?group_id=77954&package_id=78981&release_id=523489

ASP.Net版本: http://sourceforge.net/project/showfiles.php?group_id=77954&package_id=92584&release_id=543187

Tags: editor, wysiwyg

Records:25812345678910»