购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.6 mbstring模块

mbstring模块定义了一系列多字节文本操作函数,可以更方便地处理如汉字等多字节字符。使用mbstring扩展模块,需要在php.ini配置文件(Windows系统)中找到“extension=mbstring”,并确认删除了行首的分号,保存配置文件并重启PHP网站。如果不能正确使用mbstring函数,还可以查看配置文件中的extension_dir参数设置的路径是否正确,或者重启计算机后进行测试。

获取mbstring模块的配置信息时,可以使用mb_get_info()函数,它会返回包含模块信息的数组。可以使用代码“print_r(mb_get_info());”查看完整的配置信息。

下面介绍mbstring模块中的一些常用函数。

mb_convert_case($s,$mode)函数,对字符串$s中的字母进行大小写转换,参数$mode的值包括:

● MB_CASE_LOWER,字母小写。

● MB_CASE_UPPER,字母大写。

● MB_CASE_TITLE,标题风格,单词首字母大写。

下面的代码展示了mb_convert_case()函数的应用。

    <?php
    $s = "I am learning PHP.";
    echo mb_convert_case($s,MB_CASE_LOWER),"<br>";
    echo mb_convert_case($s,MB_CASE_UPPER),"<br>";
    echo mb_convert_case($s,MB_CASE_TITLE);
    ?>

代码执行结果见图3-29。

图 3-29

mb_strlen()函数,前面已经介绍过,此函数可以正确地统计汉字和其他类型字符的数量,如mb_strlen("学习PHP")返回5。

mb_strtolower()函数,将字符串中的字母转换为小写形式,并返回新的字符串。

mb_strtoupper()函数,将字符串中的字母转换为大写形式,并返回新的字符串。

mb_strwidth()函数,返回字符串的宽度,汉字按2字节计算,如mb_strwidth("学习PHP")返回7。

mb_substr()函数,截取字符串的一部分,函数定义如下。

函数的功能是在$str字符串中截取部分内容;参数$start指定开始截取的索引位置(0开始);参数$length指定截取的字符数量,默认为null值,表示截取$start开始的所有内容;参数$encoding指定文本的编码类型。下面的代码演示了mb_substr()函数的应用。

    <?php
    $s = "快乐学习PHP";
    echo mb_substr($s,1,2),"<br>";
    echo mb_substr($s,2);
    ?>

代码执行结果见图3-30。

图 3-30

mb_strimwidth()函数,获取按指定宽度截断的字符串,函数定义如下。

    mb_strimwidth(string $str, int $start, int $width[, string $trimmarker = ""[,
string $encoding = mb_internal_encoding()]] ) : string

函数的功能是在$str中从$start索引位置截取$width个字节(取完整的字符,实际截取内容可能少于此字节数);如有截断的字符,会将$trimmarker添加到新字符串末尾。下面的代码演示了mb_strimwidth()函数的使用。

    <?php
    $s = "快乐学习PHP";
    echo mb_strimwidth($s,2,3),"<br>";
    echo mb_strimwidth($s,2,4),"<br>";
    echo mb_strimwidth($s,2,3,"*");
    ?>

代码执行结果见图3-31。

图 3-31

mb_strpos()函数,在字符串中查找指定的内容,并返回第一次出现的索引位置,函数定义如下。

    mb_strpos(string $haystack, string $needle[, int $offset = 0 [, string $encoding
= mb_internal_encoding()]]) : int

函数的功能是在$haystack中查找$needle,并返回第一次出现的位置,没有找到时返回false;参数$offset设置开始查找的位置,默认从第一个字符开始(索引值为0)。下面的代码演示了mb_strpos()函数的应用。

    <?php
    $s = "快乐学习PHP";
    $result = mb_strpos($s,"学习");
    if($result===false) echo "没有找到";
    else echo "索引位置:",$result;
    ?>

执行代码会显示“索引位置:2”,即查询内容出现在第三个字符;可以修改mb_strpos()函数的第二个和第三个参数来观察输出结果。此外,mb_strpos()函数查询字符串时会区分字母的大小写,如果忽略字母大小写,可以使用mb_stripos()函数。

mb_strstr()函数,在字符串中查找指定的内容,并返回所需要的部分,函数定义如下。

    mb_strstr(string $haystack, string $needle[, bool $before_needle = false[,
string $encoding = mb_internal_encoding()]]) : string

函数的功能是,在$haystack中查询$needle,如果没有找到返回false;如果找到$needle会按$before_needle参数的设置返回内容,默认为false,返回$haystack中从$needle开始的所有内容,如果设置为true,则返回$haystack中$needle之前的内容(不包含$needle)。下面的代码展示了mb_strstr()函数的应用。

    <?php
    $s = "快乐学习PHP";
    $result = mb_strstr($s,"学习");
    if($result===false) echo "没有找到";
    else echo $result;
    echo "<br>";
    $result = mb_strstr($s,"学习",true);
    if($result===false) echo "没有找到";
    else echo $result;
    ?>

代码执行结果见图3-32。

图 3-32

mb_stristr()函数与mb_strstr()函数功能相同,只是不区分字母大小写。

mb_strrchr()函数,查找指定内容在字符串中最后出现的位置,并根据需要返回相应的内容,函数定义如下。

    mb_strrchr(string $haystack, string $needle[, bool $part = false[, string
$encoding = mb_internal_encoding()]]) : string

函数的功能是,在$haystack中查找$needle,如果没有找到,函数返回false。如果找到指定的内容则根据$part参数设置返回内容,默认为false,会返回$haystack中从$needle开始的所有内容,如果是true,则返回$haystack中$needle之前的内容(不包含$needle)。下面的代码展示了mb_strrchr()函数的使用。

    <?php
    $s = "快乐学习PHP真开心";
    $result = mb_strrchr($s,"开心");
    if($result===false) echo "没有找到";
    else echo $result;
    echo "<br>";
    $result = mb_strrchr($s,"开心",true);
    if($result===false) echo "没有找到";
    else echo $result;
    ?>

代码执行结果见图3-33,其中,第一个输出显示的是最后两个字符,第二个输出显示的是不包含最后两个字符的内容。

图 3-33

mb_strrichr()函数与mb_strrchr()函数功能相同,只是不区分字母大小写。

mb_strrpos()函数,查找指定内容在字符串最后出现的位置,函数定义如下。

    mb_strrpos(string $haystack, string $needle[, int $offset = 0[, string $encoding
= mb_internal_encoding()]]) : int

函数的功能是,在$haystack中查找$needle,并返回最后一次出现位置的索引,如果没有找到会返回false。下面的代码演示了mb_strrpos()函数的应用。

    <?php
    $s = "快乐学习PHP真快乐";
    $result = mb_strrpos($s,"快乐");
    if($result===false) echo "没有找到";
    else echo $result;
    ?>

执行代码会显示8。如果查询时忽略字母大小写,可以使用mb_strripos()函数。

mb_substr_count($s,$n)函数,统计$n在$s中出现的数量,如下面的代码。

    <?php
    $s = "快乐学习PHP真快乐";
    echo mb_substr_count($s,"快乐"),"<br>";
    echo mb_substr_count($s,"真快乐"),"<br>";
    echo mb_substr_count($s,"非常快乐");
    ?>

执行代码会显示2、1、0。

mb_split()函数,将文本内容分割为数组,函数定义如下。

    mb_split(string $pattern , string $string [, int $limit = -1 ]) : array

函数的功能是通过$pattern分割$string字符串,参数$limit指定返回数组的最大成员数量,默认为-1,此时将分割$string字符中的全部内容。下面的代码演示了mb_split()函数的应用。

    <?php
    $s = "aaa,bbb,ccc";
    $arr = mb_split(",",$s);
    print_r($arr);
    ?>

代码执行结果见图3-34。

图 3-34 Zbq7VpdtFnav9p6wp31xpPXp2vBL/F68ykQWN8t2U2MilY3HKkcrEMjVbD3O6pSy

点击中间区域
呼出菜单
上一章
目录
下一章
×