separator, '#'); if (StringUtils::hasPcreUnicodeSupport()) { $patterns = [ '#(' . $pregQuotedSeparator.')(\P{Z}{1})#u', '#(^\P{Z}{1})#u', ]; if (! extension_loaded('mbstring')) { $replacements = [ // @codingStandardsIgnoreStart static function ($matches) { return strtoupper($matches[2]); }, static function ($matches) { return strtoupper($matches[1]); }, // @codingStandardsIgnoreEnd ]; } else { $replacements = [ // @codingStandardsIgnoreStart static function ($matches) { return mb_strtoupper($matches[2], 'UTF-8'); }, static function ($matches) { return mb_strtoupper($matches[1], 'UTF-8'); }, // @codingStandardsIgnoreEnd ]; } } else { $patterns = [ '#(' . $pregQuotedSeparator.')([\S]{1})#', '#(^[\S]{1})#', ]; $replacements = [ // @codingStandardsIgnoreStart static function ($matches) { return strtoupper($matches[2]); }, static function ($matches) { return strtoupper($matches[1]); }, // @codingStandardsIgnoreEnd ]; } $filtered = $value; foreach ($patterns as $index => $pattern) { $filtered = preg_replace_callback($pattern, $replacements[$index], $filtered); } return $filtered; } }