• 微信

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

作者:Alpha时间:2017-09-14 阅读数:2977 +人阅读

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

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


本站所有文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。

如果侵犯了你的权益请来信告知我们删除。邮箱:595397166@qq.com

标签: 小程序 小程序

阿尔法

软件开发工程师#全栈工程师

{include file=foot.html}