如何删除 php 中 gmail 附件中的垃圾字符?
How to remove Junk characters coming in gmail attachments in php?
我已经标记了图像中的垃圾字符,我希望代码将其删除并开始读取其后的数据。
那个丑陋的文字不是垃圾,而是使 *.doc
文件成为 DOC 文件的东西(即格式化)。您不能真的只使用 PHP.
回显该文件
您可以使用一些 PHP 文档查看器库显示它,或者如果您可以在线找到一些 API 将 DOC 转换为 TXT。
你也可以让用户下载。使用 file_put_content()
将该附件存储到如下文档文件中:
if(file_put_content("attachment.doc", $email['attachment'])){
header("Location: attachment.doc");
}
二进制数据表示一个 *.doc 文件。如果你真的想从中提取纯文本,你可以做一些模糊逻辑,并提取不包含任何低 ASCII 码字符的行(CR 和 LF 除外)。
假设您的数据结构在 $data 中,您可以这样做:
foreach($data as $element) {
$element["attachment"] = preg_replace(
"/^.*?[\x01-\x09,\x0B,\x0C,\x0E-\x1F].*?$\R?/m",
"", $element["attachment"]);
}
同样,这只是 "fuzzy" 逻辑,因此您仍然可能会得到一些没有删除的无意义文本。
我已经标记了图像中的垃圾字符,我希望代码将其删除并开始读取其后的数据。
那个丑陋的文字不是垃圾,而是使 *.doc
文件成为 DOC 文件的东西(即格式化)。您不能真的只使用 PHP.
您可以使用一些 PHP 文档查看器库显示它,或者如果您可以在线找到一些 API 将 DOC 转换为 TXT。
你也可以让用户下载。使用 file_put_content()
将该附件存储到如下文档文件中:
if(file_put_content("attachment.doc", $email['attachment'])){
header("Location: attachment.doc");
}
二进制数据表示一个 *.doc 文件。如果你真的想从中提取纯文本,你可以做一些模糊逻辑,并提取不包含任何低 ASCII 码字符的行(CR 和 LF 除外)。
假设您的数据结构在 $data 中,您可以这样做:
foreach($data as $element) {
$element["attachment"] = preg_replace(
"/^.*?[\x01-\x09,\x0B,\x0C,\x0E-\x1F].*?$\R?/m",
"", $element["attachment"]);
}
同样,这只是 "fuzzy" 逻辑,因此您仍然可能会得到一些没有删除的无意义文本。