位置:首页 > PHP > PHP功能函数 > 字符串处理函数 >

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

字号+ 作者:micloud 来源:www.seoalphas.com 2017-09-14 08:34 浏览量:2090

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

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位置开始直到字符串结尾。 

示例代码:

echo substr("abcdef", 2);    // 返回 "cdef"
echo '<br>';
echo substr("abcdef", -3);    // 返回 "def"  从倒数第二个字符开始取 直到结尾
echo '<br>';
echo substr("abcdef", -2, 2); // 返回 "ef" 从倒数第二个字符开始取2个字符
echo '<br>';
echo substr("abcdef", 0, -2);  // 返回 "abcd" 长度为负数,截取掉从结尾开始的1个字符
echo '<br>';
echo substr("abcdef", 2, -1);  // 返回 "cde"
echo '<br>';
echo substr("abcdef", 4, -4);  // 返回 ""
echo '<br>';
echo substr("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中提取子字符串。 

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

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

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


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

示例代码:

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

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


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • PHP json_decode()解析处理js JSON.stringify

    PHP json_decode()解析处理js JSON.stringify

    浏览次数:2745

  • PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数

    PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数

    浏览次数:2211

  • PHP实现隐藏字符串指定位置字符串

    PHP实现隐藏字符串指定位置字符串

    浏览次数:2181

  • PHP json_encode()中文不转码功能拓展

    PHP json_encode()中文不转码功能拓展

    浏览次数:2171

网友点评
评论区域