我正在尝试让网页显示图像,但它似乎不起作用。
这是代码:
<?php
$files = glob("images/*.*");
for ($i=1; $i<count($files); $i++)
{
$num = $files[$i];
echo '<img src="'.$num.'" alt="random image">'." ";
}
?>
如果代码应该工作,我把它放在哪里?如果没有,有没有更好的方法来做到这一点?
您需要将此代码放在包含名为“images”的目录的目录中。名为“images”的目录还需要具有*.*
名称格式的文件。肯定有更好的方法来做你想做的事情。这将使用包含您要显示的所有图像的数据库。
如果这不适合您想要做的事情,那么您必须更具描述性。我不知道你想做什么,我从你展示给我们的代码中得到的只是将名为“images”的目录中的每个文件渲染为图像。
但是,如果这篇文章的这一点只是简单地问“我如何执行 PHP?”,请做一些搜索,不要用这样的问题来打扰我们。
@zerkms 注意到的另一件事是您的for ..
循环从迭代 1 ( $i = 1
) 开始。这意味着将跳过数组中的结果。
for ($i = 0; $i < count($files); $i++) {
此代码片段遍历目录 images/ 中的文件,并回显其包含在<img>
标签中的文件名。你不会把它放在你想要图像的地方吗?
这将进入您列出图像的文件夹images.php
的父目录中的 PHP 文件(例如) 。images
您还可以使用以下语法简化循环(并更正它,因为数组索引应该从 开始0
,而不是):1
<?php
foreach (glob("images/*.*") as $file){
echo '<img src="'.$file.'" alt="random image"> ';
}
?>
/**
* Lists images in any folder as long as it's inside your $_SERVER["DOCUMENT_ROOT"].
* If it's outside, it's not accessible.
* Returns false and warning or array() like this:
*
* <code>
* array('/relative/image/path' => '/absolute/image/path');
* </code>
*
* @param string $Path
* @return array/bool
*/
function ListImageAnywhere($Path){
// $Path must be a string.
if(!is_string($Path) or !strlen($Path = trim($Path))){
trigger_error('$Path must be a non-empty trimmed string.', E_USER_WARNING);
return false;
}
// If $Path is file but not folder, get the dirname().
if(is_file($Path) and !is_dir($Path)){
$Path = dirname($Path);
}
// $Path must be a folder.
if(!is_dir($Path)){
trigger_error('$Path folder does not exist.', E_USER_WARNING);
return false;
}
// Get the Real path to make sure they are Parent and Child.
$Path = realpath($Path);
$DocumentRoot = realpath($_SERVER['DOCUMENT_ROOT']);
// $Path must be inside $DocumentRoot to make your images accessible.
if(strpos($Path, $DocumentRoot) !== 0){
trigger_error('$Path folder does not reside in $_SERVER["DOCUMENT_ROOT"].', E_USER_WARNING);
return false;
}
// Get the Relative URI of the $Path base like: /image
$RelativePath = substr($Path, strlen($DocumentRoot));
if(empty($RelativePath)){
// If empty $DocumentRoot === $Path so / will suffice
$RelativePath = DIRECTORY_SEPARATOR;
}
// Make sure path starts with / to avoid partial comparison of non-suffixed folder names
if($RelativePath{0} != DIRECTORY_SEPARATOR){
trigger_error('$Path folder does not reside in $_SERVER["DOCUMENT_ROOT"].', E_USER_WARNING);
return false;
}
// replace \ with / in relative URI (Windows)
$RelativePath = str_replace('\\', '/', $RelativePath);
// List files in folder
$Files = glob($Path . DIRECTORY_SEPARATOR . '*.*');
// Keep images (change as you wish)
$Files = preg_grep('~\\.(jpe?g|png|gif)$~i', $Files);
// Make sure these are files and not folders named like images
$Files = array_filter($Files, 'is_file');
// No images found?!
if(empty($Files)){
return array(); // Empty array() is still a success
}
// Prepare images container
$Images = array();
// Loop paths and build Relative URIs
foreach($Files as $File){
$Images[$RelativePath.'/'.basename($File)] = $File;
}
// Done :)
return $Images; // Easy-peasy, general solution!
}
// SAMPLE CODE COMES HERE
// If we have images...
if($Images = ListImageAnywhere(__FILE__)){ // <- works with __DIR__ or __FILE__
// ... loop them...
foreach($Images as $Relative => $Absolute){
// ... and print IMG tags.
echo '<img src="', $Relative, '" >', PHP_EOL;
}
}elseif($Images === false){
// Error
}else{
// No error but no images
}
试穿这个尺寸。评论是不言自明的。