php自动创建基于带空格的文件名的超链接

时间:2013-01-04 23:05:37

标签: php file hyperlink directory

可能只是一些小的东西,但是我使用下面的代码来读取目录中的文件并将其打印出来作为自身的超链接。

它打印出完整的文件名,但它只使用第一个空格的字符创建一个不完整的超链接。问题是如何为包含空格的文件创建功能超链接?

$dir = '.';
$dh = opendir($dir);
$file_count = 0;
while (false !== ($file = readdir($dh))) {
    $files[] = $file;
    $file_count += 1;
    echo $file;
}
for ($x = 0; $x < $file_count; $x += 1) {
    echo "<a href=$files[$x]>" . "$files[$x]" . "</a><br>";
}

4 个答案:

答案 0 :(得分:2)

$dir = '.';
$dh = dir($dir);
while (FALSE !== ($file = $dh->read())) 
{
    if ('.' !== $file[0]) // ignore any entry that begins with a '.'
        echo "<a href='" . urlencode($file) . "'>". $file . "</a><br />\n";
}
$dh->close();

答案 1 :(得分:2)

我已在上面的评论中建议使用urlencodehtmlspecialchars

我还建议您使用FilesystemIterator因为在您的情况下使用非常方便:

$dir = '.';
$files = new FilesystemIterator($dir);

foreach ($files as $path => $fileinfo) {
    $name  = $fileinfo->getBasename();
    $url   = urlencode($name);
    $label = htmlspecialchars($name);
    printf("<a href=\"%s\">%s</a><br>\n", $url, $label);
}

答案 2 :(得分:1)

尝试使用glob();

foreach (glob("*.*") as $filename) {
        echo "<a href=\"$filename\">$filename</a> <br>";
}

您可以按扩展名指定,或者我指定的内容*.*,这将在他们自己的超链接上显示所有文件。

答案 3 :(得分:0)

您可能希望在锚标记内添加HREF属性的引号:

 echo "<a href='$files[$x]'>$files[$x]</a><br>";

客户端可能认为空格后面的文件名部分是另一个属性。 (您可能还想使用htmlentities()来转义href属性中的文件名。)

相关问题