PHP 截取字符串专题

1. 截取GB2312中文字符串

< ?php
//截取中文字符串
function mysubstr($str, $start, $len)
{
    $tmpstr = "";
    $strlen =
$start + $len;
    for($i = 0; $i < $strlen; $i++)
{
        if(ord(substr($str, $i, 1))
> 0xa0)
{
            $tmpstr
.= substr($str, $i,
2);
            $i++;
        }
else
            $tmpstr
.= substr($str, $i,
1);
    }
    return
$tmpstr;
}
?>

2. 截取utf8编码的多字节字符串

< ?php
//截取utf8字符串
function utf8Substr($str, $from,
$len)
{
    return
preg_replace(‘#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,‘.$from.‘}‘.
                       ‘((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,‘.$len.‘}).*#s‘,
                       ‘$1‘,$str);
}
?>
3.
UTF-8、GB2312都支持的汉字截取函数

< ?php

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;
    }

$str =
"abcd需要截取的字符串";
echo cut_str($str, 8, 0, ‘gb2312‘);
?>
4. BugFree
的字符截取函数

< ?php

function sysSubStr($String,$Length,$Append =
false)
{
    if (strlen($String) < = $Length
)
    {
        return
$String;
    }
    else
    {
        $I
= 0;
        while ($I <
$Length)
        {
            $StringTMP
=
substr($String,$I,1);
            if
( ord($StringTMP) >=224
)
            {
                $StringTMP
=
substr($String,$I,3);
                $I
= $I +
3;
            }
            elseif(
ord($StringTMP) >=192
)
            {
                $StringTMP
=
substr($String,$I,2);
                $I
= $I +
2;
            }
            else
            {
                $I
= $I +
1;
            }
            $StringLast[]
=
$StringTMP;
        }
        $StringLast
=
implode("",$StringLast);
        if($Append)
        {
            $StringLast
.=
"...";
        }
        return
$StringLast;
    }
}
echo sysSubStr("CodeBit.cn --
简单、精彩、通用",18,false);
?>

时间: 2024-08-05 18:09:57

PHP 截取字符串专题的相关文章

js常用的4种截取字符串方法

平常经常把这几个api的参数记混了,于是打算记录下来,当不确定的时候在拿出来翻翻: 在做项目的时候,经常会需要截取字符串,所以常用的方法有slice().substr().substring().match()方法等,四个方法的使用如下所示: 1 <script type="text/javascript"> 2 // 截取字符串的方法 3 //注意1.字符串的截取都是从左向右,不会有从右向左截取:2.slice与substring方法,截取返回的字符串包含numStart

面试题之java 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 要求不能出现截半的情况

题目:10. 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串. 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”. 一.需要分析 1.输入为一个字符串和字节数,输出为按字节截取的字符串-------------->按照字节[byte]截取操作字符串,先将String转换成byte类型 .2.汉字不可以截半----------------------------------

JS简单应用之截取字符串函数以及replace,split函数

JS截取字符串:slice(),substring()和substr()1.substr 方法返回一个从指定位置开始的指定长度的子字符串.stringvar.substr(start [, length ])参数stringvar必选项.要提取子字符串的字符串文字或 String 对象.start必选项.所需的子字符串的起始位置.字符串中的第一个字符的索引为 0.length可选项.在返回的子字符串中应包括的字符个数.说明如果 length 为 0 或负数,将返回一个空字符串.如果没有指定该参数

Java机试题目_怎样截取字符串

面试题1  怎样截取字符串 考题题干 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串.但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF"6,应该输出"我ABC",而不是"我ABC+汉的半个". 试题分析 本面试题容易产生困惑的是中文字符和英文字符,在这里需要考虑汉字和英文字符的占用字节数问题,中文字符占两个字节,英文字符占一个字节,理解了这

C#截取字符串

public class SubStrHelper { /// <summary> /// 截取字符串长度,中文二字节 /// </summary> /// <param name="str"></param> /// <param name="length">字节长度</param> /// <returns></returns> public static strin

截取字符串空格

----截取字符串左侧空格 ---- ltrim(表达式) select LTRIM(FName),Fname from T_Personselect LEN(   123),LTRIM(   123) ----截取字符串右侧空格---- rtrim(表达式) select LEN(   123),rtrim(123   )

js如何截取字符串右边指定长度的字符

js如何截取字符串右边指定长度的字符:通常情况下都从字符串的左边开始截取字符串,下面介绍一下如何从字符串的右边截取字符串.代码如下: String.prototype.right=function(length_) { var _from=this.length-length_; if(_from<0) _from=0; return this.substring(this.length - length_,this.length); } var str="antzone"; c

文章生成器,Split方法截取字符串。从硬盘读取文件,和向硬盘存储文件参考代码

string x, y; private void button2_Click(object sender, EventArgs e) { textBox2.Clear(); if (button4.Enabled == false) { string[] shuzu = y.Split(new char[]{'.'}); //用split方法截取字符串 string news = ""; // 将截取字符串后的语句打乱顺序 for (int i = 0; i < shuzu.L

Js自动截取字符串长度,添加省略号“……”

JavaScript字符串处理函数,根据定义的长度截取字符串,超出部分裁掉追加……,很多时候网页上显示的内容需要缩成“...”该方法用于处理字符串显示固定长度,超长部分用“...”代替: /**参数说明: * 根据长度截取先使用字符串,超长部分追加… * str 对象字符串 * len 目标字节长度 * 返回值: 处理结果字符串 */ function cutString(str, len) { //length属性读出来的汉字长度为1 if(str.length*2 <= len) { ret