PHP列出文件夹中的所有HTML文件< a>

q0qdq0h2  于 2023-02-07  发布在  PHP
关注(0)|答案(4)|浏览(172)

我有一个html文件列出了艺术家页面的链接。我想做的是使用一个php脚本来列出它们,而不是手动列出它们。我也想有一个缩略图上面的每个相应的链接,但我想在我添加图像之前先得到链接。我使用以下脚本,但它不工作:

<?php

$directory = "C:/wamp/myprojects/UMVA/web/includes/artists";
$phpfiles = glob($directory . "*.html");

foreach($phpfiles as $phpfile)
{
    echo '<a href="'.basename($phpfile).'">'.$phpfile.'</a>';
}

?>

包含html文件的文件夹是artists。它不能使用完整的路径名,也不能只使用'artists'或'/artists'作为路径名。'artists'文件夹与包含脚本的php文件在同一个目录'web'中。

sauutmhj

sauutmhj1#

这应该能达到目的

$htmlFiles = glob("$directory/*.{html,htm}", GLOB_BRACE);

source

muk1a3rh

muk1a3rh2#

不确定错误在哪里,但是你也可以使用SPL迭代器,比如GlobIterator,以一种更可重用的方式。GlobIterator返回SplFileInfo对象,该对象提供了关于你的文件的许多有用的信息。
以下是文档页面:

下面是一个例子:

$it = new GlobIterator('C:/wamp/myprojects/UMVA/web/artists/*.jpg');

foreach ($it as $file) {
    // I added htmlspecialchars too, never output unsafe data without escape them
    echo '<a href="' . htmlspecialchars($file->getPathname()) . '">' . htmlspecialchars($file->getFilename()) . '</a>';
}
iih3973s

iih3973s3#

如果您目录始终是“C:/wamp/myprojects/UMVA/web/artists”,我认为您可以尝试使用scandir($dirname)而不是glob()。

osh3o9ms

osh3o9ms4#

下面是一个简单的脚本,它将在当前目录中查找html文件,并创建一个基于title标签的超链接。

<?php
// Get all HTML files in the directory
$html_files = glob("*.{html,htm}", GLOB_BRACE);
$url = "https://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

// Print out each file as a link
foreach($html_files as $file) {
    $contents = file_get_contents($file);
    $start = strpos($contents, '<title>');
    if ($start !== false) {
         $end = strpos($contents, '</title>', $start);
         $line = substr($contents, $start + 7 , $end - $start - 7);
         echo "<center><a href=" . '"' . $url . $file . '"' . ">$line</a></center><br>\n";
    }
}
?>

将此文件另存为index.php,将html文件放在文件夹中并浏览到URL。

相关问题