如何删除 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" 逻辑,因此您仍然可能会得到一些没有删除的无意义文本。