易截截图软件、单文件、免安装、纯绿色、仅160KB

PHP中文截取,UTF8和GBK详解

 
 中文字符截取是一个十分有用的功能,在很多地方都会用到,比如提取定长标题,抽取标签等
由于各种字符集的存储方式的不一样,存在双字节(GBK)多字节(Unicode)的存储方式,这就导致了统一处理的困难。
国际标准UTF8字符编码中,存储中文字符要3个字节,即把php文件存储为UTF8编码格式可以得到
strlen("中")=3
假如直接用php的字符串函数去处理类似这个字符将可能产生乱友的情况,主要是由于在一个完整字符中间强制截断产生半字符的情况。要避免这种情况的唯一办法就是把截断位置延长到这个字符结束的位置进行截断
在PHP中,提供了mbstring模块功能,mbstring以字符作为操作的基本单元,如mb_strlen("中","utf-8")=1

大部分的mbstring都要求输入编码,当然可以在php环境中设置默认的编码。参数设置为mbstring.internal_encoding
= UTF-8, mbstring.http_input = UTF-8, mbstring.http_output =
UTF-8, mbstring.substitute_character =
UTF-8。由于php系统一般是存储字节来计算长度的,为了消除mbstring和string之间的差异,使用mbstring的时候就要格外小心
了。
假如不使用mbstring的功能 的话,可以自行编写中文字符处理的函数。
php中文截取函数,经网上搜索学习发现,大部分网络中都是以从开始位置一个一个完整字符来实现的。这有可能导致效率十分底。下面我写了个截取函数,是针对UTF8的
<?php
$str = "d中-在f在你是d我的国家困g在有和,人。工";
var_dump(strcut($str,0,9));
function strcut($str,$start,$len){
if($start < 0)
$start = strlen($str)+$start;

$retstart = $start+getOfFirstIndex($str,$start);
echo $retstart;
$retend = $start + $len -1 + getOfFirstIndex($str,$start + $len);
echo $retend;
return substr($str,$retstart,$retend-$retstart+1);
}
//判断字符开始的位置
function getOfFirstIndex($str,$start){
$char_aci = ord(substr($str,$start-1,1));
if(223<$char_aci && $char_aci<240)
return -1;
$char_aci = ord(substr($str,$start-2,1));
if(223<$char_aci && $char_aci<240)
return -2;
return 0;
}
?>

224-239是UTF8中文字符高位(第一位,共三位)ascii区间,换算成十六进制为0xE0 - 0xEF 二进制为1100 0000 - 1100 FFFF。通


相关文档:

php时间格式化

日期格式化date()函数的格式化字符:  
  Y   年,4位数字  
  m   月,前面带0:"01"-"12"  
  d   月中的天  
  H   时,24时制  
  i   分  
  s   ......

【转】在Windows上配置并整合PHP和MySQL经典教程

在为用户提供动态内容方面,PHP和MySQL是一个强大的组合。这些年来,这两项产品已经跨越了它们最初的应用舞台,现在,一些世界上最繁忙的网站也在应用它们。虽然它们当初都是开源软件,只能在UNIX/Linux上运行,但经过相当一段时期的发展,它们已能在Windows平台上运行。
在本文中,我将逐步为你们说明如何在Windows环境中 ......

PHP常用函数推荐

 
1.产生随机字符串函数
function random($length) {
 $hash = '';
 $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
 $max = strlen($chars) - 1;
 mt_srand((double)microtime() * 1000000);
 for($i = 0; $i < $length; $i++) {
  $ha ......

手机号码判断php函数,包含15号段

 <?php

function checkMobile($str)
{
$pattern = "/^(13|15)\d{9}$/";
if (preg_match($pattern,$str))
{
Return true;
}
else
{
Return false;
}
}
$str = checkMobile("15800000001");
......

PHP preg_match 用法

       本函数以 pattern 的规则来解析比对字符串 subject。比对结果返回的值放在数组参数 matches 之中,matches[0] 内容就是原字符串 subject、matches[1] 为第一个合乎规则的字符串、matches[2] 就是第二个合乎规则的字符串,余类推。若省略参数 matches,则只是单纯地比对,找到则返回值为 tr ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号