. * * To disable strict typing, comment out the directive below. */ declare(strict_types=1); function acronym(string $text): string { $parts = array_filter(mb_split("[^\w']", $text)); if (count($parts) <= 1) { return ""; } $parts2 = []; foreach ($parts as $part) { $first = mb_substr($part, 0, 1); if (mb_strlen($part) == 1) { $parts2[] = $first; continue; } $first = mb_strtoupper($first); $part = $first . mb_substr($part, 1); $part = mb_ereg_replace("[a-z]", " ", $part); $subs = array_filter(mb_split("[\s]", $part)); foreach ($subs as $sub) { $parts2[] = $sub; } } $reduced = array_reduce($parts2, function($accu, $v) { return $accu . mb_substr($v, 0, 1); } ); return mb_strtoupper($reduced); }