我有一个Repository,看起来像这样
在我的debs / Index.PHP中,我有一个PHP脚本列出debs文件夹中的.deb文件,这是我的脚本:
<?PHP
# directory
$directory = dir("./");
# Extension Filter, comment to disable:
$allowed_ext = array(".deb", ".txt", ".ext", ".ext", ".ext", ".ext");
$do_link = TRUE;
$sort_what = 0; //0:y name; 1: by size; 2:by date
$sort_how = 0; //0: ASCENDING; 1:DESCENDING
# # #
function dir_list($dir){
$i=0;
$dl = array();
if ($hd = opendir($dir)) {
while ($sz = readdir($hd)) {
if (preg_match("/^\./",$sz)==0) $dl[] = $sz;$i.=1;
}
closedir($hd);
}
asort($dl);
return $dl;
}
if ($sort_how == 0) {
function compare0($x, $y) {
if ( $x[0] == $y[0] ) return 0;
else if ( $x[0] < $y[0] ) return -1;
else return 1;
}
function compare1($x, $y) {
if ( $x[1] == $y[1] ) return 0;
else if ( $x[1] < $y[1] ) return -1;
else return 1;
}
function compare2($x, $y) {
if ( $x[2] == $y[2] ) return 0;
else if ( $x[2] < $y[2] ) return -1;
else return 1;
}
}else{
function compare0($x, $y) {
if ( $x[0] == $y[0] ) return 0;
else if ( $x[0] < $y[0] ) return 1;
else return -1;
}
function compare1($x, $y) {
if ( $x[1] == $y[1] ) return 0;
else if ( $x[1] < $y[1] ) return 1;
else return -1;
}
function compare2($x, $y) {
if ( $x[2] == $y[2] ) return 0;
else if ( $x[2] < $y[2] ) return 1;
else return -1;
}
}
##################################################
# We get the information here
##################################################
$i = 0;
while($file=$directory->read()) {
$file = strtolower($file);
$ext = strrchr($file, '.');
if (isset($allowed_ext) && (!in_array($ext,$allowed_ext)))
{
// dump
}
else {
$temp_info = stat($file);
$new_array[$i][0] = $file;
$new_array[$i][1] = $temp_info[7];
$new_array[$i][2] = $temp_info[9];
$new_array[$i][3] = date("F d, Y", $new_array[$i][2]);
$i = $i + 1;
}
}
$directory->close();
##################################################
# We sort the information here
#################################################
switch ($sort_what) {
case 0:
usort($new_array, "compare0");
break;
case 1:
usort($new_array, "compare1");
break;
case 2:
usort($new_array, "compare2");
break;
}
###############################################################
# We display the infomation here
###############################################################
$i2 = count($new_array);
$i = 0;
echo "<table class='CSSTableGenerator'>
<tr>
<td width=355>File name (Download)</td>
<td align=center width=70>File Size</td>
<td align=center width=100>Last Modified</td>
</tr>";
for ($i=0;$i<$i2;$i++) {
if (!$do_link) {
$line = "<tr><td>" .
$new_array[$i][0] .
"</td><td>" .
number_format(($new_array[$i][1]/1024)) .
" KB";
$line = $line . "</td><td>" . $new_array[$i][3] . "</td></tr>";
}else{
$line = '<tr><td align=left ><A class="ex1" HREF="' .
$new_array[$i][0] . '">' .
$new_array[$i][0] .
"</A></td><td>";
$line = $line . number_format(($new_array[$i][1]/1024)) .
" KB" . "</td><td>" .
$new_array[$i][3] . "</td></tr>";
}
echo $line;
}
echo "</table>";
?>
脚本的输出是:
所以,我想要做的是添加一个新列,它将包含指向deb的Depiction页面的链接(如果存在)。该页面将位于Depiction /“package-name”/index.php
中也许我们可以使用deb名称“com.name.app1”的开头来获取它的描述文件。
新输出看起来像这样:
如果有人能帮助我实现这一点,我将不胜感激!
答案 0 :(得分:1)
您只需将链接的URL指定为相对于当前路径(../
)的一个文件夹,然后获取您{{1}中已有的文件名的前x个字符数如你所述,从$new_array
计算:
com.name.app1
已编辑:如果文件的第一部分并不总是有一定数量的字符,但总是用下划线(if (!$do_link) {
$line = "<tr><td>" . $new_array[$i][0];
$line .= '</td><td><a href="' . '../Depiction/' . substr($new_array[$i][0], 0, strlen("com.name.app1")) . '/index.php">Depiction</a>';
$line .= "</td><td>" . number_format(($new_array[$i][1]/1024)) . " KB";
$line .= "</td><td>" . $new_array[$i][3] . "</td></tr>";
}
)除以(例如)你将不得不指定一个特定的模式,系统无法为你猜测它,你可以改变这部分代码:
_
答案 1 :(得分:0)
如果为链接添加额外的列并不重要,则可以将$ do_link设置为true。如果将$ do_link设置为true,则文件名将变为可点击。
如果您想要下载额外的列,请更改以下行:
$line = "<tr><td>" .
$new_array[$i][0] .
"</td><td>" .
number_format(($new_array[$i][1]/1024)) .
" KB";
到
$line = "<tr><td>" . $new_array[$i][0] . "</td>".
'<a class="ex1" href="' .$new_array[$i][0] . '">Depiction</a></td>'.
"<td>" . number_format(($new_array[$i][1]/1024)) . " KB";
该表仅列出现有文件,因此所有文件都可以下载。