【问题标题】:PHP reading word document to get only Email addressPHP读取word文档仅获取电子邮件地址
【发布时间】:2012-07-22 13:57:22
【问题描述】:

好的,这是我想要一个 php 脚本打开并读取用户上传的 Word 文档并获取文档中的电子邮件地址并将其存储到数据库的内容。

只有电子邮件地址!它会像

电子邮件:someone@example.com 或类似“电子邮件是某人@example.com”

任何格式 .. 可以肯定的是,电子邮件 ID 和其他单词之间会有空格分隔。有人能帮我吗 ? :D

【问题讨论】:

    标签: php ms-word docx doc


    【解决方案1】:

    这确实有点宽泛。从根本上说,您需要处理以下步骤:

    上传word文档

    您需要让用户上传文件。有一个 tutorial at w3schools 应该可以帮助您开始

    解析内容

    Office 文件很复杂 - 从技术上讲,每个文件都是一个完整的文件系统,因为您可以嵌入图像、其他文档等......新的 .docx 实际上只是带有一些 XML 的 zip 文件 - 尝试将一个重命名为 .zip并打开它。旧式.doc 是一种专有的 MS 格式,虽然同样复杂,但更加模糊。 This library 似乎将 word 文件转换为 html,这可能会使阅读它们变得容易得多。

    查找电子邮件地址

    我怀疑你最好的机会是使用正则表达式从正文中提取电子邮件地址。如果有多个电子邮件地址怎么办?这是一个introduction to email regexes,它可能会有所帮助。 This answer 是同一件事

    要获得更详细的答案,您必须提供更具体的问题。

    【讨论】:

    • 谢谢 .. 任何正则表达式示例?
    • 库的链接需要python?我可以重命名它吗?它会工作吗?
    • @ShyleshMohan 对不起,我的错误。试试theseanswers。如果做不到这一点,您可能需要自己解压缩/阅读 - PhpWord 可能是一个很好的起点
    【解决方案2】:

    将 Word 转换为文本:

    $filename="file.doc";
    $TXTfilename = $filename . ".txt";
    $word = new COM("word.application") or die("Unable to instantiate Word object");
    $word->Documents->Open($filename);
    // the '2' parameter specifies saving in txt format
    $word->Documents[1]->SaveAs($TXTfilename ,2);
    $word->Documents[1]->Close(false);
    $word->Quit();
    $word->Release();
    $word = NULL;
    unset($word);
    $content = file_get_contents($TXTfilename);
    unlink($TXTfilename);
    

    获取数组中的所有电子邮件:

    $content = "My email is email@example.com"; // it's example. 
    $matches = array();
    $pattern = '/[A-Za-z0-9_-]+@[A-Za-z0-9_-]+\.([A-Za-z0-9_-][A-Za-z0-9_]+)/'
    preg_match($pattern,$content,$matches);
    

    【讨论】:

    • 使用 COM,您假设安装了 Office 的 Windows 服务器。此外,Office 自动化在生产环境中也不好——开销很大(每次操作都需要一个新的 office 实例),office 有时仍然会在错误时抛出消息框(在释放资源之前让进程等待用户单击 Ok)等。 .. 并不是说​​它不会工作,而是它不会可靠和健壮地工作。
    • 真实故事。你的回答更好。谢谢你。
    • 只是因为我经历了使用 COM 为 Excel 生成报告来维护系统的痛苦——这该死的东西太喜怒无常了,以至于服务器被安排定期重启!
    • 感谢您的回答,所以使用 COM 是个坏主意!
    • @ShyleshMohan 阅读this。 “微软目前不推荐也不支持任何无人值守、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务)的 Microsoft Office 应用程序自动化,因为 Office 可能表现出不稳定的行为和/或在此环境中运行 Office 时出现死锁。”
    猜你喜欢
    • 2011-03-27
    • 2013-08-22
    • 1970-01-01
    • 2019-09-09
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多