Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php根据带有空格的文件名自动创建超链接_Php_File_Hyperlink_Directory - Fatal编程技术网

php根据带有空格的文件名自动创建超链接

php根据带有空格的文件名自动创建超链接,php,file,hyperlink,directory,Php,File,Hyperlink,Directory,可能只是一些小的东西,但我正在使用下面的代码读取目录中的文件,并将它们作为指向自身的超链接打印出来 它打印出完整的文件名,但只使用第一个空格内的字符创建不完整的超链接。问题是如何为包含空格的文件创建功能超链接 $dir = '.'; $dh = opendir($dir); $file_count = 0; while (false !== ($file = readdir($dh))) { $files[] = $file; $file_count += 1; echo

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

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

$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>";
}
$dir=';
$dh=opendir($dir);
$file\u count=0;
while(false!=($file=readdir($dh))){
$files[]=$file;
$file_count+=1;
echo$文件;
}
对于($x=0;$x<$file\u count;$x+=1){
回声“
”; }
您可能希望在锚定标记内的HREF属性中添加引号:

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

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

您可能希望在锚定标记中的href属性中添加引号:

 echo "<a href='$files[$x]'>$files[$x]</a><br>";
echo“
”;
客户端可能认为文件名中空格后面的部分是另一个属性。(您可能还想使用htmlentities()来转义href属性中的文件名。)

尝试使用
glob()

foreach(全局(“**”)作为$filename){
回声“
”; }
您可以通过扩展名指定,或者我指定的内容。
*.
这将在其自己的超链接上显示所有文件

尝试使用
glob()

$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();
foreach(全局(“**”)作为$filename){
回声“
”; }
您可以通过扩展名指定,或者我指定的内容。
*.
这将在其自己的超链接上显示所有文件

$dir=';
$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();
$dh=dir($dir); while(FALSE!==($file=$dh->read()) { if(“.!==$file[0])//忽略以“.”开头的任何条目 回显“
\n”; } $dh->close();
$dir=';
$dh=dir($dir);
while(FALSE!==($file=$dh->read())
{
if(“.!==$file[0])//忽略以“.”开头的任何条目
回显“
\n”; } $dh->close();
我已经在上面的评论中建议使用和

我还建议您使用,因为在您的案例中使用非常方便:

$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);
}
$dir=';
$files=新的文件系统发射器($dir);
foreach($path=>$fileinfo形式的文件){
$name=$fileinfo->getBasename();
$url=urlencode($name);
$label=htmlspecialchars($name);
printf(“
\n”,$url,$label); }
我已经在上面的评论中建议使用和

我还建议您使用,因为在您的案例中使用非常方便:

$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);
}
$dir=';
$files=新的文件系统发射器($dir);
foreach($path=>$fileinfo形式的文件){
$name=$fileinfo->getBasename();
$url=urlencode($name);
$label=htmlspecialchars($name);
printf(“
\n”,$url,$label); }
-如果创建超链接(URL/URI),则需要遵循规则,否则您所使用的语言与您要使用的浏览器不同。当心。在输出HTML时,还需要创建有效的HTML。小心。
-如果创建超链接(URL/URI),则需要遵循规则,否则您所使用的语言与您要使用的浏览器不同。当心。在输出HTML时,还需要创建有效的HTML。小心。
我会用这个方法。这要简单得多。谢谢但是,由于您在问题中提出的原因,它仍然会破坏您的HTML。您的问题不是获取目录列表,而是输出它。在你让它工作之后,你可以选择如何改进获取目录列表。我将使用这个方法。这要简单得多。谢谢但是,由于您在问题中提出的原因,它仍然会破坏您的HTML。您的问题不是获取目录列表,而是输出它。在你让它工作之后,你可以选择如何改进获取目录列表的方式。直到你有一个文件名,其中不包含空格,而是一个引号…-出于同样的原因,你会再次遇到同样的问题。实际上,您首先需要的是
urlencode
,例如,文件名中的特殊字符,您希望在下一个请求中保留这些字符。@hakre-您是对的。最安全的方法可能是处理非html安全字符和非URL安全字符的:“”。是的,属性值也应该通过
htmlentities
传递,以防需要。对于
urlencoded
值,情况并非如此,因此您的建议是误导性的-它表明您不知道自己在做什么,也不知道完全出于什么原因(是的,这些计算机在某些方面非常严格;)。请参阅-如果您认为这样更安全,请以这种方式回答,您应该始终提供最稳定的代码作为答案,而不仅仅是脆弱的补丁代码,下一次很快就会崩溃。直到您的文件名不包含空格,而是包含单引号…-出于同样的原因,你会再次遇到同样的问题。实际上,您首先需要的是
urlencode
,例如,文件名中的特殊字符,您希望在下一个请求中保留这些字符。@hakre-您是对的。最安全的方法可能是处理非html安全字符和非URL安全字符的:“”。是的,属性值也应该通过
htmlentities
传递,以防需要。对于
urlencoded
值,情况并非如此,因此您的建议是误导性的-它表明您不知道自己在做什么,也不知道完全出于什么原因(是的,这些计算机在某些方面非常严格;)。请参阅-如果您认为这更安全,请以这种方式回答,您应该始终提供最稳定的代码作为答案,而不仅仅是脆弱且会崩溃的修补代码