Rob*_*ano -1 php directory file str-replace
我有一个PHP代码,显示列表中目录的文件内容.每个文件都是链接的,因此如果单击,它将下载或打开.目录中的文件将是客户上传的文件.如果文件名包含空格,则链接已断开且无法打开,因此我希望将空格替换为下划线.
我知道str_replace做了我正在寻找的东西,但我不知道如何将它应用于这个代码(我没有写).
// Define the full path to your folder from root
$path = "uploads/artwork";
// Open the folder
$dir_handle = @opendir($path) or die("Unable to open $path");
// Loop through the files
while ($file = readdir($dir_handle)) {
if($file == "." || $file == ".." || $file == "index.php" )
continue;
echo "<a href=uploads/artwork/$file>$file</a><br />";
}
// Close
closedir($dir_handle);
Run Code Online (Sandbox Code Playgroud)
非常感谢所有帮助.谢谢!
当您将文件名保存到服务器时,也必须用下划线替换文件名.
由于您没有保存文件的代码,因此您可以urlencode()使用链接URL,以免被危险字符破坏.请注意,最初它被空格打破,因为你没有href用引号括起来的值,我在这里做:
echo "<a href='" . urlencode("uploads/artwork/$file") . "'>$file</a><br />";
Run Code Online (Sandbox Code Playgroud)
否则,要用下划线替换空格,您需要:
echo "<a href=" . str_replace( ' ', "_", "uploads/artwork/$file") . ">$file</a><br />";
Run Code Online (Sandbox Code Playgroud)
但同样,这可能需要您在上传时更改文件名.
请注意,您还需要调用该链接htmlentities()的$file一部分,以防止<破坏HTML页面等字符.所以,最终结果将是:
echo "<a href='" . urlencode("uploads/artwork/$file") . "'>" . htmlentities( $file) . "</a><br />";
Run Code Online (Sandbox Code Playgroud)