PHP explode 将 ÆØÅ 转换为 &

PHP explode converts ÆØÅ to &

我编写了一个将用户全名转换为 "First name + first initial of last name" 的脚本。但是,当用户的姓氏以“ÆØ”或“Å”开头时,脚本会将这些字符转换为“&”。前任。 "Barbara Østergaard" returns "Barbara &.".

if (empty($user->first_name) && empty($user->last_name)) { 
  $full_name = "Anonymous teacher";
  $url = "anonymous-teacher";  
} else { 
  $name = $user->first_name . ' ' . $user->last_name; 
  $name = explode(" ", $name); 
  $full_name = $name[0]." ".$name[1][0].".";
  $url = strtolower($name[0]."-".$name[1][0]);
}

对名称使用 html_entity_decode()

示例:How can i decode my html entities chars (ÆØÅ)?

由于您使用的是 UTF-8 字符,因此像数组一样解析字符将无法正常工作。

这应该可以解决您的问题 return 第二个单词的第一个字符:

mb_substr( $name[1], 0, 1,'UTF8');

工作示例:

   $name = "Barbara Østergaard";
   $name = explode(" ", $name); 
   echo $name[0]." ".mb_substr( $name[1], 0, 1,'UTF8');.".";