以下答案允许在将密码保护的文件移植到PHP后检测密码保护的.docx
文件:https://stackoverflow.com/a/14347730/1794894
$content = utf8_encode(file_get_contents($absolutePath));
if (mb_substr($content, 0, 2) == "ÐÏ") {
# DOC/XLS 2007+
$start = str_replace("\x00", " ", mb_substr($content, 0, 2000));
if (mb_strstr($start, 'E n c r y p t e d P a c k a g e') !== false) {
return true;
}
if ($extension == 'doc') {
return true;
}
}
如何进行.doc
特定检查? .doc
个文件是否也有特定的字节序列?或者仅仅依靠文件前两个字符的ÐÏ
检查就足够了?
或者,如果受密码保护.doc
,位置0x20B的字符始终等于0x13吗?
答案 0 :(得分:1)
根据问题中帖子的C#示例解决了这个问题。
我们无法使用COM对象,大多数服务器都不运行MS Word。
请参阅Gist代码段:https://gist.github.com/rvanlaak/06ca1b65658a91240362
答案 1 :(得分:0)
它应该是这样的......
<?php
$word=new COM("word.application") or die("Cannot create Word object");
$word->Visible=false;
$word->WindowState=2;
$word->DisplayAlerts=false;
$doc = $word->Document->Open("/yourFile.doc");
$passwordProtect = $doc->Document->HasPassword;//true or false
$word->ActiveDocument->Close(false);
$word->Quit();
$word->Release();
$word=null;
?>
我无法测试此代码,希望它有所帮助...