我需要从变量$ name中分割第一个字母。 我该怎么做?
$name = $userData['name'];
我怎么能得到第一个字母?
请检查是否正确:
if($userData['gender'] == 'male'){
if($firstletter=='i'){
$picture = ImageCreateFromPNG ($global['maleBackgroundImages'][1]);
}else{
$picture = ImageCreateFromPNG ($global['maleBackgroundImages'][2]);}
}else{
if($firstletter=='i'){
$picture = ImageCreateFromPNG ($global['maleBackgroundImages'][1]);
}else{
$picture = ImageCreateFromPNG ($global['maleBackgroundImages'][2]);}
}
答案 0 :(得分:8)
$userData['name'][0]
字符串中的偏移量可以像数组一样访问。请注意,这假设您的字符串采用单字节编码。如果您有多字节编码字符串,则需要:
mb_substr($userData['name'], 0, 1, 'UTF-8' /* (the correct encoding) */)
答案 1 :(得分:3)
从duplicate question移出。代码略有不同,但涵盖相同。
首先,您不仅需要知道字符串是哪种语言(希伯来语),还要知道使用了哪种字符编码。
假设输入位于名为$letters
的变量内,编码为UTF-8。您要比较的字母是א
('HEBREW LETTER ALEF'(U + 05D0))。
要发布的第一个悬崖是在PHP脚本中安全地使用UTF-8表示,这可能是UTF-8编码以外的其他表示:
$compareLetter = "\xD7\x90"; // UTF-8 'HEBREW LETTER ALEF' (U+05D0)
下一个悬崖是从输入中提取第一个字母。正如我们所知,$compareLetter
的定义是字节大小为2。所以我们需要比较前两个字节:
$isSame = substr($letters, 0, 2) === $compareLetter;
您的其余代码可以保持不变(但也可以像我现在那样简化):
$png = $global['maleBackgroundImages'][4 + $isSame];
$picture = ImageCreateFromPNG($png);
完整的代码示例:
...
$compareLetter = "\xD7\x90"; // UTF-8 'HEBREW LETTER ALEF' (U+05D0)
$isSame = substr($letters, 0, 2) === $compareLetter;
$png = $global['maleBackgroundImages'][4 + $isSame];
$picture = ImageCreateFromPNG($png);
字符编码注释:
一些补充说明:
true
等于整数1
和false
等于0
。if
的数量通常会减少代码。这可以帮助您减少错误。答案 2 :(得分:2)
您可以使用数组语法获取字符串的第一个字母!
$firstletter = $userData['name'][0];
答案 3 :(得分:0)
这只是一个补充答案。
如果您希望使用utf-8字符串进行整齐的单字符访问,则可以执行以下操作:
$chars = preg_split( '/(?<!^)(?!$)/u', $userData['name'] );
echo $chars[0];