好的,我想要一个php脚本来打开并读取用户上传的Word文档并获取将在文档中的电子邮件地址并将其存储到数据库中。
只有电子邮件地址!它会像
一样混淆电子邮件:someone@example.com或类似“Email is someone@example.com”
任何格式..有一件事是肯定会有空格分隔电子邮件ID和其他单词。有人能帮我吗 ? :d
答案 0 :(得分:2)
这真的有点宽泛。从根本上说,您需要处理以下步骤:
您需要让用户上传文件。有tutorial at w3schools可以帮助你入门
Office文件很复杂 - 每个文件都是整个文件系统,因为你可以嵌入图像,其他文件等......新.docx
实际上只是带有一些XML的zip文件 - 尝试将一个文件重命名为{ {1}}并打开它。旧式.zip
是一种专有的MS格式,虽然同样复杂但更加混淆。 This library似乎将word文件转换为html,这可能会让他们更容易阅读。
我怀疑你最好的机会是使用正则表达式从正文中提取电子邮件地址。如果有多个电子邮件地址怎么办?这是一个introduction to email regexes可能会有所帮助。 This answer是同一件事
要获得更详细的答案,您将不得不提供更具体的问题。
答案 1 :(得分:1)
将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);