俄语是一种语言,而不是字符集。Unicode(以 UTF-8 编码)包含所有世界语言的字符,并且是您应该使用的唯一字符集。特定于语言的字符集,例如带有变音符号的英语和欧洲语言(例如德语、法语和瑞典语)的 ISO-8859-1 和西里尔字母的 ISO-8859-5 是 ASCII 的传统扩展,仅限于特定的脚本. 使用 Unicode(通过 UTF-8)可以让您的脚本支持所有可能的字符。
如果您正确使用 Unicode ,您正在处理的文本的语言和脚本将变得无关紧要。这意味着如果您mb_
正确使用多字节扩展(以 开头的那些函数),则无需担心您正在处理的语言。
但是,让我们继续讨论您的具体问题。首先,使用Content-Type
HTTP 标头设置正确的编码而不是meta
标记。将以下内容添加到脚本的开头并删除meta
标记:
header("Content-Type: text/html; charset=utf-8");
这也应该修复var_dump
输出。
接下来,要获取全名的首字母,您需要执行以下操作:
- 拆分名称以获得名字和姓氏。
- 获取每个元素的第一个字母。
- 组合字母得到首字母。
试试这个例子:
<?php
header("Content-Type: text/html; charset=utf-8");
if(isset($_POST['name'])) {
$full_name = $_POST['name'];
// split the name on whitespace, this includes Unicode characters
// that represent whitespace but are not 0x20 (ASCII space)
$elements = preg_split('/\s+/', $full_name);
// get the initials
$initials = '';
foreach($elements as $element) {
$initials .= mb_substr($element, 0, 1, 'UTF-8');
}
echo "<p>Your initials are: ", $initials, "</p>\n";
}
?>
<form action="" method="POST">
<p>
Please enter your name:
<input type="text" name="name" />
<input type="submit" />
</p>
</form>
我已经在https://peschar.net/files/initials.php为您提供了一个演示。