gpt4 book ai didi

php - 使用 PHP 为目录中的文件显示 docx 属性(标题、标签)

转载 作者:行者123 更新时间:2023-12-04 13:49:35 24 4
gpt4 key购买 nike

我正在使用下面的代码查找目录中所有 docxxlsxpdf 文件的列表并链接到这些文件 ( taken from this site ).

我想显示 docx 属性,例如 TitleAuthor 以及任何已添加到文档中的标签。有没有办法仅使用 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="&lt;Directory&gt;";
$size="&lt;Directory&gt;";
$class="dir";
} else {
$class="file";
}

// Cleans up . and .. directories
if($name=="."){$name=". (Current Directory)"; $extn="&lt;System Dir&gt;";}
if($name==".."){$name=".. (Parent Directory)"; $extn="&lt;System Dir&gt;";}

//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>");
}
}
?>

最佳答案

I would like to show docx properties such as Title, Author and any tags have have been added to the document. Is there a way to display those properties using just PHP?

您正在寻找的是一种可以从文件中提取元数据的工具。一旦您理解了什么是元数据——基本上是描述文件或对象中数据的数据——那么工作就完成了 1/2。剩下的就是找到最适合您需求的工具。

如果您想要纯 PHP 解决方案,请考虑使用 getID3这是一个不错且开发良好的 PHP 库,应该能够处理该任务。不能 100% 确定它处理 DOCx 和其他 Microsoft 格式的能力,但值得一看。

此外,Microsoft 自己有名为 PHPWord 的 PHP 库它允许您操作 Microsoft DOCx 和相关文档的内容,因此我假设元数据提取是其中的一部分。

如果您使用的是 Linux 或 Mac OS X 等 Unix 变体,以及过去的 PHP 特定库,请考虑使用像 exiftool 这样的工具。我用过并强烈推荐。是的,它是一个系统二进制文件,但您可以通过 PHP 中的 exec() 调用来使用它,让它正常工作。

查看您的特定代码,因为它似乎只能通过 readdir 获取目录内容,您必须编写一些逻辑来 Hook 这些文件名和路径,然后将实际文件传递给 getID3PHPWordexiftool 将数据读入某些内容。

快速查看代码工作中的循环,查看获取文件大小的这一行:

// 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 中的位置,然后像访问任何其他数组一样访问它。

关于php - 使用 PHP 为目录中的文件显示 docx 属性(标题、标签),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24250370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com