截取UTF-8编码的中英混排字符

上一篇 / 下一篇  2007-04-06 14:42:20 / 个人分类:PHP

截取UTF-8编码的中英混排字符



CODE:
<!--
文件名称:SubStr.php
功    能:中文字符截取
作    者:特蓝克斯
建立时间:2007-3-22
注    释:网络收集一篇关于字符截取的代码
-->
<?PHP
$str="这个字符好长呀";
$Short_Str=cSubStr($str,0,5);//截取前面4个汉字,结果为:这个字符...
Echo   "$Short_Str";
/*
======================================================
$str    字符
$start  字符截取位置
$len    截取字符的数
======================================================
*/
Function cSubStr($str,$start,$len) //设置3个参数
{
        $strlen=strlen($str); // 获取字符长度
        $clen=0;
        for($i=0;$i<$strlen;$i++,$clen++)
        {
                if ($clen>=$start+$len) //当大于截取字符数,则跳出循环
                        break;
                if(ord(substr($str,$i,1))>0xa0) //ord 本函数返回字符的 ASCII (美国国家标准交换码) 序数值。本函数和chr()函数相反。
                { //0xa0 代表 十进制 160,0xa0表示汉字的开始
                        if ($clen>=$start)  //判断截取位置
                                $tmpstr.=substr($str,$i,2);   //中文截取两个字符
                        $i++;
                }
                        else
                {
                        if ($clen>=$start)
                                $tmpstr.=substr($str,$i,1);   //非中文截取一个字符
                }
        }
        $tempstr = $tmpstr;
        if ($str<>$tempstr)
                $tempstr .= "..."; //要以什么结尾,修改这里就可以.
        return $tempstr;
}
?>

源码下载:

<?php
/** 
@title:Label_Content 函数
@author:特蓝克斯
@date:2007-05-09
@功能:提取$Label参数标签之间的内容,利用正则 preg_match 提取标签的内容
@Note:提取规则中间不允许有回车符。
例如:
正确
<a href=#>超链接</a>
错误 
<a href=#>
超链接
</a>
*/ 
$lstr="
<HTML>
 <HEAD>
  <TITLE>  特蓝克斯  </TITLE>
 </HEAD>

 <BODY>
  <a href='#'>超链接标记</a>
  <asen>自定义的标签</asen>
 </BODY>
</HTML>
";
function Label_Content($Label,$Content) {
 preg_match("/(\<".$Label.".*?\>)(.*?)(\<\/".$Label."\>)/i",$Content,$matches);
 return $matches;
}

echo ("<pre>");
echo ("<textarea cols='100' rows='25'>");
print_r (Label_Content("title",$lstr));
print_r (Label_Content("a",$lstr));
print_r (Label_Content("asen",$lstr));
echo ("<body>标签之间有'回车符'所以无法提取相应的标签中的值:");
print_r (Label_Content("body",$lstr));
echo ("即返回数据为空");
echo ("</textarea>");
echo "</pre>";
?>

源码下载:http://blog.54master.com/batch.download.php?aid=12036

TAG: PHP php

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

关于作者