php mb_convert_case()保留大写的单词

php mb_convert_case()保留大写的单词,php,string,utf-8,mbstring,Php,String,Utf 8,Mbstring,假设我有一个字符串“HET1200 text string”,我需要将其更改为“HET1200 text string”。编码应该是UTF-8 我该怎么做?目前,我使用mb_convert_case($string,mb_case_TITLE,“UTF-8”)但这会将“HET1200”更改为“HET1200” 我可以指定一个例外,但它并不是详尽无遗的。所以我宁愿所有大写单词都保持大写 谢谢:)好的,让我们试着尽可能近距离地重新创建mb\u convert\u case,但只更改每个单词的第一个字

假设我有一个字符串“HET1200 text string”,我需要将其更改为“HET1200 text string”。编码应该是UTF-8

我该怎么做?目前,我使用
mb_convert_case($string,mb_case_TITLE,“UTF-8”)但这会将“HET1200”更改为“HET1200”

我可以指定一个例外,但它并不是详尽无遗的。所以我宁愿所有大写单词都保持大写


谢谢:)

好的,让我们试着尽可能近距离地重新创建
mb\u convert\u case
,但只更改每个单词的第一个字符

mb\u convert\u案例
实施的相关部分如下:

int mode = 0; 

for (i = 0; i < unicode_len; i+=4) {
    int res = php_unicode_is_prop(
        BE_ARY_TO_UINT32(&unicode_ptr[i]),
        UC_MN|UC_ME|UC_CF|UC_LM|UC_SK|UC_LU|UC_LL|UC_LT|UC_PO|UC_OS, 0);
    if (mode) {
        if (res) {
            UINT32_TO_BE_ARY(&unicode_ptr[i],
                php_unicode_tolower(BE_ARY_TO_UINT32(&unicode_ptr[i]),
                    _src_encoding TSRMLS_CC));
        } else {
            mode = 0;
        }   
    } else {
        if (res) {
            mode = 1;
            UINT32_TO_BE_ARY(&unicode_ptr[i],
                php_unicode_totitle(BE_ARY_TO_UINT32(&unicode_ptr[i]),
                    _src_encoding TSRMLS_CC));
        }
    }
}
测试:

给出:

HETÁ1200 Ááxt Ítring Uii 他是我的朋友
谢谢。这很有创意!也非常感谢你的解释。:)非常感谢!这对我目前的问题有帮助!救生圈!2019年:)
echo mb_convert_case_utf8_variation("HETÁ1200 Ááxt ítring uii");
HETÁ1200 Ááxt Ítring Uii