email中header的内容如果不是ascii码,就会编码成mime类型的信息。在php中应该如何对这些信息解码?不知道为什么用iconv_mime_decode有些情况下不能正常解码。另外,发现有header中的内容可能有多段mime的编码的内容(=?.+?=)。请教用php是否有标准的解析mime header的方法?
email中header的内容如果不是ascii码,就会编码成mime类型的信息。在php中应该如何对这些信息解码?不知道为什么用iconv_mime_decode有些情况下不能正常解码。另外,发现有header中的内容可能有多段mime的编码的内容(=?.+?=)。请教用php是否有标准的解析mime header的方法?
标准的解析方法... 内置函数应该是没有...
但是有个第三方库你可以使用下...
php-mime-mail-parser
立即学习“PHP免费学习笔记(深入)”;
写了个解析方法,测试基本通过。
function parse_mime($pending, $to_charset = 'UTF-8') {
$start = strpos($pending, '=?');
if ($start === false) {
return $pending;
}
$end = strpos($pending, '?=', $start + 2);
if ($end === false) {
return $pending;
}
while ($start !== false && $end !== false) {
$segment = substr($pending, $start, $end - $start + 2);
$charset_end = strpos($segment, '?', 2);
$charset = substr($segment, 2, $charset_end - 2);
$encType = strtoupper($segment{$charset_end + 1});
$encoded_text = substr($segment, $charset_end + 3, strlen($segment) - $charset_end -
5);
switch ($encType) {
case 'Q':
$encoded_text = str_replace('_', ' ', $encoded_text);
$text = quoted_printable_decode($encoded_text);
break;
case 'B':
$text = base64_decode($encoded_text);
break;
}
$text = mb_convert_encoding($text, $to_charset, $charset);
$pending = str_replace($segment, $text, $pending);
// next encoded-word.
$start = strpos($pending, '=?');
$end = strpos($pending, '?=', $start + 2);
}
return $pending;
}
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
C++高性能并发应用_C++如何开发性能关键应用
Java AI集成Deep Java Library_Java怎么集成AI模型部署
Golang后端API开发_Golang如何高效开发后端和API
Python异步并发改进_Python异步编程有哪些新改进
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全
Java GraalVM原生镜像构建_Java怎么用GraalVM构建高效原生镜像
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
C++现代C++20/23/26特性_现代C++有哪些新标准特性如modules和coroutines
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号