Mb preferred mime name: примеры (PHP)
mb_preferred_mime_name(string $encoding): string|falseФункция mb_preferred_mime_name в PHP возвращает предпочтительное MIME-имя для указанной кодировки символов. Эта функция применяется при работе с многобайтовыми кодировками, в основном для корректного указания кодировки в заголовках HTTP, например, в заголовке Content-Type.
Функция является частью модуля mbstring (Multibyte String), который расширяет возможности стандартных строковых функций PHP для работы с многобайтовыми кодировками, такими как UTF-8, EUC-JP, SJIS и другие.
- encoding (обязательный) – строка, содержащая имя кодировки, для которой требуется получить MIME-имя. Это может быть как стандартное имя кодировки (например, "UTF-8"), так и одно из её псевдонимов.
Функция возвращает строку с предпочтительным MIME-именем для указанной кодировки. Если кодировка неизвестна или функция не может определить MIME-имя, возвращается false.
Получение MIME-имени для кодировки UTF-8.
<?php
$mime = mb_preferred_mime_name("UTF-8");
echo $mime;
?>UTF-8
Функция работает с различными псевдонимами кодировок.
<?php
$mime = mb_preferred_mime_name("utf8");
echo $mime;
?>UTF-8
<?php
$mime = mb_preferred_mime_name("SJIS");
echo $mime;
?>Shift_JIS
<?php
$mime = mb_preferred_mime_name("UNKNOWN_ENCODING");
var_dump($mime);
?>bool(false)
В PHP нет прямой альтернативы для получения MIME-имени кодировки, но есть функции для работы с кодировками.
Возвращает массив всех поддерживаемых кодировок. Может использоваться для проверки, поддерживается ли конкретная кодировка, но не даёт MIME-имён.
<?php
$encodings = mb_list_encodings();
print_r($encodings);
?>Получает или устанавливает кодировку вывода для HTTP. Полезна для установки кодировки, но не возвращает MIME-имя.
<?php
mb_http_output("UTF-8");
echo mb_http_output();
?>UTF-8
mb_preferred_mime_name применяется, когда нужно именно MIME-имя для заголовков. Для простой проверки кодировок используют mb_list_encodings, а для управления выводом – mb_http_output.
Функция ожидает строку. Передача другого типа может привести к неожиданному поведению.
<?php
$mime = mb_preferred_mime_name(123);
var_dump($mime);
?>bool(false)
Если модуль mbstring не загружен, функция будет недоступна.
<?php
// При отключённом mbstring
$mime = mb_preferred_mime_name("UTF-8");
?>Fatal error: Uncaught Error: Call to undefined function mb_preferred_mime_name()
Некоторые кодировки чувствительны к регистру. Рекомендуется использовать стандартные имена.
<?php
$mime = mb_preferred_mime_name("utf-8");
echo $mime;
?>UTF-8
Функция mb_preferred_mime_name была добавлена в PHP 4.0.6. С тех пор её поведение остаётся стабильным.
В PHP 8.0 не было значительных изменений в работе этой функции. Однако, в целом, в PHP 8 усилилась строгость типов, поэтому передача неверного типа аргумента может чаще приводить к ошибкам или предупреждениям.
В PHP 8.2 также не было изменений, специфичных для этой функции.
Использование функции для установки правильного заголовка Content-Type.
<?php
$encoding = "UTF-8";
$mime_name = mb_preferred_mime_name($encoding);
header("Content-Type: text/html; charset=" . $mime_name);
?>Комбинирование с mb_list_encodings для безопасного получения MIME-имени.
<?php
$encoding = "EUC-JP";
if (in_array($encoding, mb_list_encodings())) {
$mime = mb_preferred_mime_name($encoding);
echo "MIME-имя для $encoding: $mime";
} else {
echo "Кодировка $encoding не поддерживается.";
}
?>MIME-имя для EUC-JP: EUC-JP
Получение MIME-имён для списка кодировок.
<?php
$encodings = ["UTF-8", "SJIS", "ISO-8859-1", "UNKNOWN"];
foreach ($encodings as $enc) {
$mime = mb_preferred_mime_name($enc);
echo "$enc: " . ($mime ? $mime : "Не найдено") . "<br>";
}
?>UTF-8: UTF-8
SJIS: Shift_JIS
ISO-8859-1: ISO-8859-1
UNKNOWN: Не найдено
Пример интеграции в метод отправки email с указанием кодировки.
<?php
class MailSender {
private $encoding;
public function setEncoding($encoding) {
$this->encoding = $encoding;
}
public function getContentTypeHeader() {
$mime = mb_preferred_mime_name($this->encoding);
return "Content-Type: text/plain; charset=" . $mime;
}
}
$mailer = new MailSender();
$mailer->setEncoding("UTF-8");
echo $mailer->getContentTypeHeader();
?>Content-Type: text/plain; charset=UTF-8
Mb preferred mime name в Python
В Python нет прямой аналогичной функции. Для получения MIME-типа кодировки обычно используют словари или библиотеку charset-normalizer.
import mimetypes
mimetypes.add_type('text/html; charset=utf-8', '.html')
# Прямого аналога нетMb preferred mime name в Javascript
В браузерном JavaScript нет стандартной функции для получения MIME-имени кодировки. Кодировка обычно указывается в заголовке Content-Type сервера или в мета-теге HTML.
// Аналогов в нативном JS нет
// Кодировка может быть получена из document.characterSetMb preferred mime name в MySQL
В MySQL есть функция CHARSET, которая возвращает кодировку строки, но не MIME-имя.
SELECT CHARSET('текст');utf8mb4
PHP функция уникальна своей прямой задачей – возврат MIME-имени кодировки. В других языках это обычно делается через дополнительные библиотеки или вручную.
PHP mb_preferred_mime_name function comments
- Php mb preferred mime name - аргументы и возвращаемое значение
- Функция php mb_preferred_mime_name - описание
- mb preferred mime name - примеры
- mb preferred mime name - похожие методы на php
- mb_preferred_mime_name на js, python, mysql
- mb preferred mime name изменения php
- Примеры mb_preferred_mime_name на php