我使用下面的代码来查找目录中所有docx
, xlsx
和pdf
文件的列表,并链接到这些文件(取自本网站)。
我想显示docx
属性,如Title
, Author
和任何标签都已添加到文档中。是否有一种方法可以只用PHP显示这些属性?
<div id="container">
<table class="sortable">
<thead>
<tr>
<th>Filename</th>
<th>Date Modified</th>
</tr>
</thead>
<tbody>
<div align="center">
<?php
// Opens directory
$myDirectory=opendir(".");
// Set Accepted Files
$acceptExts = array("docx", "pdf", "xlsx");
// Gets Each Entry
while($entryName = readdir($myDirectory)) {
$exts = explode(".", $entryName);
if(in_array($exts[1],$acceptExts)) {
$dirArray[] = $entryName;
}
}
// Finds extensions of files
function findexts ($filename) {
$filename=strtolower($filename);
$exts=split("[/\.]", $filename);
$n=count($exts)-1;
$exts=$exts[$n];
return $exts;
}
// Closes directory
closedir($myDirectory);
// Counts elements in array
$indexCount=count($dirArray);
// Sorts files
sort($dirArray);
// Loops through the array of files
for($index=0; $index < $indexCount; $index++) {
// Allows ./?hidden to show hidden files
if($_SERVER['QUERY_STRING']=="hidden")
{$hide="";
$ahref="./";
$atext="Hide";}
else
{$hide=".";
$ahref="./?hidden";
$atext="Show";}
if(substr("$dirArray[$index]", 0, 1) != $hide) {
// Gets File Names
$name=$dirArray[$index];
$namehref=$dirArray[$index];
// Gets Extensions
$extn=findexts($dirArray[$index]);
// Gets file size
$size=number_format(filesize($dirArray[$index]));
// Gets Date Modified Data
$modtime=date("M j Y", filemtime($dirArray[$index]));
$timekey=date("Ymd", filemtime($dirArray[$index]));
// Separates directories
if(is_dir($dirArray[$index])) {
$extn="<Directory>";
$size="<Directory>";
$class="dir";
} else {
$class="file";
}
// Cleans up . and .. directories
if($name=="."){$name=". (Current Directory)"; $extn="<System Dir>";}
if($name==".."){$name=".. (Parent Directory)"; $extn="<System Dir>";}
//Display to screen
print("
<tr class='$class'>
<td><a href='./$namehref'>$name</a></td>
<td sorttable_customkey='$timekey'><a href='./$namehref'>$modtime</a></td>
</tr>");
}
}
?>
我想显示docx属性,如标题,作者和任何标签已经添加到文档中。有显示的方法吗这些属性只用PHP吗?
你要找的是一个可以从文件中提取元数据的工具。一旦您理解了元数据是什么,即描述文件或对象中的数据的数据,那么工作就完成了一半。剩下的就是找到一个最适合你需要的工具。
如果你想要一个纯PHP解决方案,那么考虑使用getID3
,这是一个很好的&开发良好的PHP库,应该能够处理该任务。不能100%确定它处理DOCx和其他微软格式的能力,但值得一看。
同时,微软自己也有一个叫做PHPWord
的PHP库,它允许你操作微软DOCx &所以我认为元数据提取是其中的一部分。
和过去的PHP特定库,如果你是在Linux或Unix变体,如Mac OS X,看看使用工具,如exiftool
,我已经使用了&强烈推荐。是的,它是一个系统二进制文件,但是你可以在PHP中通过exec()
调用来使用它,它是神奇的。
看看你的特定代码,因为它似乎只通过readdir
获得目录内容,你必须编码一些逻辑来挂钩到那些文件名&路径,然后将实际文件传递给getID3
, PHPWord
或exiftool
以读取数据。
快速看一下你代码中的循环,看看这行得到filesize:
// Gets file size
$size=number_format(filesize($dirArray[$index]));
好吧,在这行出现之前或之后,你需要做这样的事情:
// Gets file info metadata.
$getID3 = new getID3;
$file_info = $getID3->analyze($dirArray[$index]);
则$file_info
的内容将是与$dirArray[$index]
中加载的文件相连接的数据数组。如何访问这些数据?现在还不清楚,但是你可以通过像这样转储$file_info
的内容来看看它抓取了什么东西。
echo '<pre>';
print_r($file_info);
echo '</pre>';
然后找出你想要的数据在$file_info
中的位置,然后像访问其他数组一样访问它。