transliterate() public static method

If intl extension isn't available uses fallback that converts latin characters only and removes the rest. You may customize characters map via $transliteration property of the helper.
public static transliterate ( string $string, string | Transliterator $transliterator = null ) : string
$string string input string
$transliterator string | Transliterator either a [[Transliterator]] or a string from which a [[Transliterator]] can be built.
return string
Example #1
0
 /**
  * Returns Content-Disposition header value that is safe to use with both old and new browsers
  *
  * Fallback name:
  *
  * - Causes issues if contains non-ASCII characters with codes less than 32 or more than 126.
  * - Causes issues if contains urlencoded characters (starting with `%`) or `%` character. Some browsers interpret
  *   `filename="X"` as urlencoded name, some don't.
  * - Causes issues if contains path separator characters such as `\` or `/`.
  * - Since value is wrapped with `"`, it should be escaped as `\"`.
  * - Since input could contain non-ASCII characters, fallback is obtained by transliteration.
  *
  * UTF name:
  *
  * - Causes issues if contains path separator characters such as `\` or `/`.
  * - Should be urlencoded since headers are ASCII-only.
  * - Could be omitted if it exactly matches fallback name.
  *
  * @param string $disposition
  * @param string $attachmentName
  * @return string
  *
  * @since 2.0.10
  */
 protected function getDispositionHeaderValue($disposition, $attachmentName)
 {
     $fallbackName = str_replace('"', '\\"', str_replace(['%', '/', '\\'], '_', Inflector::transliterate($attachmentName, Inflector::TRANSLITERATE_LOOSE)));
     $utfName = rawurlencode(str_replace(['%', '/', '\\'], '', $attachmentName));
     $dispositionHeader = "{$disposition}; filename=\"{$fallbackName}\"";
     if ($utfName !== $fallbackName) {
         $dispositionHeader .= "; filename*=utf-8''{$utfName}";
     }
     return $dispositionHeader;
 }