繁体   English   中英

如何从php中的字符串获取带有变音符的字符?

[英]How to get a character with diacritical mark from a string in php?

我正在编写一个接受一个人的中间名的代码,将其转换为大写然后得到其第一个字符。 例如,用户输入名称“ winston”,然后我将大写“ W”。

我可以使用这两个代码中的任何一个来获取字符串的第一个字符,并且它可以正常工作。

    mb_strtoupper(substr($name,0,1));

要么

    mb_strtoupper($name[0]);

我正在使用mb_strtoupper(),以便它可以使用ñ等变音符号转换字符。

我的问题是名字的第一个字符带有变音符号时。

Ñana

我正在测试代码,

    $name_1 = 'Ñana';
    echo strtoupper(substr($name_1,0,1));
    echo '<br>';
    echo strtoupper($name_1[0]);

结果

在此处输入图片说明

我试图增加$ name_1的索引和substr()的参数。

    $name_1 = 'Ñana';
    echo strtoupper(substr($name_1,0,2));
    echo '<br>';
    echo strtoupper($name_1[1]);

结果

在此处输入图片说明

如果字符串的第一个字符没有变音符号,我的代码将起作用。

我应该如何处理? 或我该如何处理这种情况?

您不能将substr用于UTF-8编码的字符串,因为您从单个多字节字符中切出了1个字节。 多字节字符串函数中使用mb_substr

echo mb_strtoupper(mb_substr($name_1, 0, 1));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM