將 "Billy Bob" 轉為 "B.B.",適用於用戶頭像佔位、列表首字母索引、郵件簽名生成等場景。
function initials(string $name): string {
$parts = explode(' ', $name);
$result = '';
foreach ($parts as $part) {
if ($part !== '') {
$result .= $part[0] . '.';
}
}
return strtoupper($result);
}
// 測試
echo initials('John Doe'); // J.D.
echo initials(' Mary Jane '); // M.J.
echo initials('Alice'); // A.
explode 產生空元素,循環中判斷 $part !== '' 跳過。trim() 預處理或循環內判斷均可。$part[0] 取第一個位元組,中文姓名會亂碼,需用 mb_substr($part,0,1,'UTF-8')。function chineseInitials(string $name): string {
// 需第三方拼音庫,如 overtrue/pinyin
$pinyin = \Overtrue\Pinyin\Pinyin::instance();
return strtoupper(implode('', array_map(fn($w)=>$w[0], $pinyin->convert($name))));
}