资讯专栏INFORMATION COLUMN

PHP之mb_convert_case使用

lixiang / 2211人阅读

摘要:对字符串进行大小写转换对一个进行大小写转换,转换模式由指定。如果省略,则使用内部字符编码。剩下的没有提及的二进制位,全部为这个符号的码。

mb_convert_case

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

mb_convert_case — Perform case folding on a string

mb_convert_case — 对字符串进行大小写转换

Description
string mb_convert_case ( string $str , int $mode [, string $encoding = mb_internal_encoding() ] )
//Performs case folding on a string, converted in the way specified by mode.
//对一个 string 进行大小写转换,转换模式由 mode 指定。
Parameters str

The string being converted.

要被转换的 string。

mode

The mode of the conversion. It can be one of MB_CASE_UPPER, MB_CASE_LOWER, or MB_CASE_TITLE.

转换的模式。它可以是 MB_CASE_UPPERMB_CASE_LOWERMB_CASE_TITLE 的其中一个。

encoding

The encoding parameter is the character encoding. If it is omitted, the internal character encoding value will be used.

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

Return Values

A case folded version of string converted in the way specified by mode.

按 mode 指定的模式转换 string 大小写后的版本。

Examples
 AAA "Aaa"

function mb_convert_case_utf8_variation( $s ) {
    $arr    = preg_split( "//u", $s, - 1, PREG_SPLIT_NO_EMPTY );
    var_dump($arr);
    $result = "";
    $mode   = false;
    foreach ( $arr as $char ) {
        $res = preg_match(
                   "/p{Mn}|p{Me}|p{Cf}|p{Lm}|p{Sk}|p{Lu}|p{Ll}|" .
                   "p{Lt}|p{Sk}|p{Cs}/u", $char ) == 1;
        if ( $mode ) {
            if ( ! $res ) {
                $mode = false;
            }
        } elseif ( $res ) {
            $mode = true;
            $char = mb_convert_case( $char, MB_CASE_TITLE, "UTF-8" );
        }
        $result .= $char;
    }
    
    return $result;
}

echo mb_convert_case_utf8_variation("AAA "aaa"").PHP_EOL;
//AAA "Aaa"

echo mb_convert_case("Hello 中国",MB_CASE_UPPER).PHP_EOL;//HELLO 中国
echo mb_convert_case("Hello 中国",MB_CASE_UPPER,"GBK").PHP_EOL;//HELLO 中国
Extension Unicode

By contrast to the standard case folding functions such as strtolower() and strtoupper(), case folding is performed on the basis of the Unicode character properties. Thus the behaviour of this function is not affected by locale settings and it can convert any characters that have "alphabetic" property, such as A-umlaut (Ä).

和类似 strtolower()、strtoupper() 的标准大小写转换函数相比, 大小写转换的执行根据 Unicode 字符属性的基础。 因此此函数的行为不受 语言环境(locale)设置的影响,能够转换任意具有“字母”属性的字符,例如元音变音A(Ä)

For more information about the Unicode properties, please see » http://www.unicode.org/unicod...

更多关于 Unicode 属性的信息,请查看 » http://www.unicode.org/unicod...。

UTF-8 编码规则

对于单字节的符号,字节的第一位设为0,后面7位为这个符号的 Unicode 码。

因此对于英语字母,UTF-8 编码和 ASCII 码是相同的。

对于n字节的符号(n > 1),第一个字节的前n位都设为1,第n + 1位设为0,

后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的 Unicode 码。

Unicode符号范围     |        UTF-8编码方式
(十六进制)          |              (二进制)
----------------------+---------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

跟据上表,解读 UTF-8 编码非常简单。如果一个字节的第一位是0,则这个字节
多带带就是一个字符;如果第一位是1,则连续有多少个1,就表示当前字符占用多少个字节。
因为多字节的utf-8编码值的前一位都是以1开头。

文章参考

http://php.net/manual/en/func...

转载注明出处

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28182.html

相关文章

  • PHP面试常考会话控制

    摘要:一的会话也称为。如果启动会话成功,则函数返回,否则返回。会话启动后就可以载入该会话已经注册的会话变量以便使用。但数组创建的在会话结束后就会失效。预告本周三更新面试常考之网络协议,敬请期待。 你好,是我琉忆,欢迎您来到PHP面试专栏。本周(2019.2-25至3-1)的一三五更新的文章如下: 周一:PHP面试常考之会话控制周三:PHP面试常考之网络协议周五:PHP面试常考题之会话控制和...

    lsxiao 评论0 收藏0
  • PHP面试常考设计模式——策略模式

    摘要:策略模式介绍策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。使用策略模式的好处策略模式提供了管理相关的算法族的办法。使用策略模式可以避免使用多重条件转移语句。 你好,是我琉忆,PHP程序员面试笔试系列图书的作者。 本周(2019.3.11至3.15)的一三五更新的文章如下: 周一:PHP面试常考之设计模式——工...

    Drinkey 评论0 收藏0
  • PHP代码修正CodeSniffer

    摘要:它包含两类脚本,和地址脚本对文件定义了一系列的代码规范通常使用官方的代码规范标准,比如的,能够检测出不符合代码规范的代码并发出警告或报错可设置报错等级。脚本能自动修正代码格式上不符合规范的部分。 Last-Modified: 2019年5月10日13:59:27 参考链接 PHP开发规范之使用phpcbf脚本自动修正代码格式 在PhpStorm中使用PSR2编码规范phpcbf脚本自...

    khs1994 评论0 收藏0
  • php设计模式

    摘要:我们今天也来做一个万能遥控器设计模式适配器模式将一个类的接口转换成客户希望的另外一个接口。今天要介绍的仍然是创建型设计模式的一种建造者模式。设计模式的理论知识固然重要,但 计算机程序的思维逻辑 (54) - 剖析 Collections - 设计模式 上节我们提到,类 Collections 中大概有两类功能,第一类是对容器接口对象进行操作,第二类是返回一个容器接口对象,上节我们介绍了...

    Dionysus_go 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<