php字符串截取substr,php字符串处理函数:substr、mb_substr

字符串处理在实际应用中会频繁的用到,熟练掌握字符串截取技巧可以简化程序开发中很多代码处理。

substr— 返回字符串的子串

string substr(string $string, int $start[, int $length])

返回字符串 string 由 start 和 length 参数指定的子字符串。

参数说明:

string输入字符串。

start如果start是非负数,返回的字符串将从string的start位置开始,从0开始计算。例如,在字符串"abcdef"中,在位置0 字符是"a",位置2的字符串是"c"等等。

如果start是负数,返回的字符串将从string结尾处向前数第start个字符开始。

如果string的长度小于或等于start,将返回FALSE。

length 如果提供了正数的 length,返回的字符串将从start处开始最多包括length个字符(取决于string的长度)。

如果提供了负数的length,那么string末尾处的许多字符将会被漏掉(若start是负数则从字符串尾部算起)。如果 start 不在这段文本中,那么将返回一个空字符串。

如果提供了值为0,FALSE或NULL的length,那么将返回一个空字符串。

如果没有提供length,返回的子字符串将从start位置开始直到字符串结尾。

示例代码:

echosubstr("abcdef",2);// 返回 "cdef"echo'
';echosubstr("abcdef",-3);// 返回 "def"  从倒数第二个字符开始取 直到结尾echo'
';echosubstr("abcdef",-2,2);// 返回 "ef" 从倒数第二个字符开始取2个字符echo'
';echosubstr("abcdef",0,-2);// 返回 "abcd" 长度为负数,截取掉从结尾开始的1个字符echo'
';echosubstr("abcdef",2,-1);// 返回 "cde"echo'
';echosubstr("abcdef",4,-4);// 返回 ""echo'
';echosubstr("abcdef",-3,-1);// 返回 "de"

substr用于截取字符串,如果遇到中文字符进行截取时,输出的结果可能不太是我们想要的(中文字符截取容易出现乱码),这时候就要使用另一个加强版的字符串截取函数:mb_substr()。

mb_substr— 获取字符串的部分(PHP 4 >= 4.0.6, PHP 5, PHP 7)

string mb_substr (string $str, int $start[,int $length = NULL [, string $encoding = mb_internal_encoding()]])

根据字符数执行一个多字节安全的substr()操作。位置是从str的开始位置进行计数。第一个字符的位置是0。第二个字符的位置是1,以此类推。

参数说明:

str从该string中提取子字符串。

startstr中要使用的第一个字符的位置。

lengthstr中要使用的最大字符数。 If omitted or NULL is passed, extract all characters to the end of the string.

encodingencoding参数为字符编码。如果省略,则使用内部字符编码。

返回值 mb_substr() 函数根据 start 和 length 参数返回 str 中指定的部分。

示例代码:

$str="贝加尔湖畔 在我的怀里 abcde 在你的眼里那里春风沉醉 那里绿草如茵月光把爱恋 洒满了湖面两个人的篝火 照亮整个夜晚多少年以后 如云般游走那变换的脚步 让我们难牵手这一生一世 有多少你我被吞没在月光如水的夜里多想某一天 往日又重现我们流连忘返 在贝加尔湖畔多少年以后 往事随云走那纷飞的冰雪容不下那温柔这一生一世 这时间太少不够证明融化冰雪的深情就在某一天 你忽然出现你清澈又神秘 在贝加尔湖畔你清澈又神秘 像贝加尔湖畔";echomb_substr($str,0,10,'utf8');        //贝加尔湖畔 在我的怀里 abc郭

注意:当设置utf8编码后,中文字符串一个汉字长度为1,一个空格长度也为1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值