php - 使用 php 更改链接单击时回显内的目录名称或路径
问题描述
我正在尝试创建艺术家画廊。画廊已创建,但当我需要 50 位艺术家时,我必须创建 50 个页面。因此,单击链接后,我只需要更改文件夹的方向。最好的方法是什么?链接到我的画廊 http://www.divart.sk/vg/krajina.php
艺术家的链接
<option value="http://www.divart.sk/vg/krajina.php">krajina</option>
<option value="http://www.divart.sk/vg/virtualgallery.php">Adina Chitu</option>
php代码
$dir = "krajina/";
if (is_dir($dir)){
if ($dh = opendir($dir)){
while (($file = readdir($dh)) !== false){
if( $file == '.' || $file == '..')
continue;
echo " <div><img src='krajina/" . $file . "'/></div>";
}
closedir($dh);
}
}
解决方案
您可以通过using ( Parse String ) 和ScanDir将文件夹名称传递给php 脚本来做简单的事情。Query String
您必须创建此结构:
http://www.divart.sk/vg/gallery.php?dir=the_artist_folder
http://www.divart.sk/vg/krajina/
http://www.divart.sk/vg/nicole/
http://www.divart.sk/vg/jonathan/
其中文件夹名称是文件夹艺术家,而gallery.php
是读取文件夹艺术家的php 脚本!
根据评论中的要求,您可以通过加载放置在文件夹艺术家中的文本文件(不是最佳方式)来添加艺术家信息,例如:
http://www.divart.sk/vg/krajina/artist.txt
http://www.divart.sk/vg/nicole/artist.txt
http://www.divart.sk/vg/jonathan/artist.txt
文本文件示例artist.txt
:
Artist: krajina;
Born: 1967/04/18;
Photo Genre: Nature;
License Photo: Creative Commons;
例如:<option value="http://www.divart.sk/vg/gallery.php?dir=krajina">krajina</option>
gallery.php
<?php ini_set('default_charset', 'UTF-8'); ?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="distribution" content="global">
<meta name="language" content="italian it">
<meta name="language" content="english en">
<meta name="rating" content="general">
<meta name="revisit-after" content="6 days">
<meta name="pragma" content="no-cache">
<meta name="robots" content="index, nofollow">
<title>Gallery</title>
<link rel="stylesheet" type="text/css" media="all" href="gallery.css">
<link rel="shortcut icon" href="/favicon.ico">
</head>
<body>
<?php
// example: http://www.divart.sk/vg/gallery.php?dir=krajina
// rev .04 (23.04.2019)
function file_get_contents_utf8($fn) {
$content = file_get_contents($fn);
return mb_convert_encoding($content, 'UTF-8', mb_detect_encoding($content, 'UTF-8, ISO-8859-1', true));
}
$gurl = $_SERVER['QUERY_STRING'];
$ourl = array();
$list = array();
parse_str($gurl, $ourl);
$valid_artist = array("krajina", "nicole", "jonathan");
if (isset($ourl['dir']) || (!empty($ourl['dir']))) {
if (!in_array($ourl['dir'], $valid_artist)) {
exit("This artist name isn't allowed");
}
if ((!file_exists($ourl['dir'])) || (!is_dir($ourl['dir']))) {
exit("This folder doen't exist!");
}
if (preg_match('/[\s]/', $ourl['dir'])) {
exit("Detected white space, please don't use it");
} else {
$dir = htmlspecialchars($ourl['dir'], ENT_NOQUOTES, 'UTF-8');
}
}
if ((isset($dir)) || (!empty($dir))) {
if (file_exists("$dir/artist.txt") && is_file("$dir/artist.txt")) {
$artist = file_get_contents_utf8("$dir/artist.txt");
$artist = htmlentities($artist, ENT_QUOTES, 'UTF-8');
echo "<div>$artist</div>\n";
}
$list = scandir($dir);
foreach ($list as $file) {
if (is_file($dir . '/' . $file)) {
$ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
if ($ext == 'gif' || $ext == 'jpeg' || $ext == 'jpg' || $ext == 'png') {
echo "<div>\n<img src=\"" . $dir . '/' . $file . "\" alt=\"" . $dir . "\"><br />\n</div>\n";
echo "<div>\nPhoto: " . basename($file) . "<br />\n</div>\n";
}
}
}
} else {
echo "No Artist Folder to Show!";
}
?>
</body>
</html>
如果你看到 PHP 生成的html 源代码,你可以看到:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="distribution" content="global">
<meta name="language" content="italian it">
<meta name="language" content="english en">
<meta name="rating" content="general">
<meta name="revisit-after" content="6 days">
<meta name="pragma" content="no-cache">
<meta name="robots" content="index, nofollow">
<title>Gallery</title>
<link rel="stylesheet" type="text/css" media="all" href="gallery.css">
<link rel="shortcut icon" href="/favicon.ico">
</head>
<body>
<div>Artist: krajina;
Born: 1967/04/18;
Photo Genre: Nature;
License Photo: Creative Commons;</div>
<div>
<img src="krajina/001.jpg" alt="krajina"><br />
</div>
<div>
Photo: 001.jpg<br />
</div>
<div>
<img src="krajina/002.jpg" alt="krajina"><br />
</div>
<div>
Photo: 002.jpg<br />
</div>
<div>
<img src="krajina/003.jpg" alt="krajina"><br />
</div>
<div>
Photo: 003.jpg<br />
</div>
<div>
<img src="krajina/004.jpg" alt="krajina"><br />
</div>
<div>
Photo: 004.jpg<br />
</div>
<div>
<img src="krajina/005.jpg" alt="krajina"><br />
</div>
<div>
Photo: 005.jpg<br />
</div>
</body>
</html>
我希望这有帮助。
推荐阅读
- batch-file - 在批处理文件中添加一个 reg 有问题
- python - Python如何在执行后使用autopygui将函数加倍
- python - 从元组列表中为每个项目创建 np.arrays 的最快方法
- c++ - 我是否必须将经过测试的源文件添加到 VS2017 中的单元测试项目中?
- wcf - 主机启动并运行,但无法从客户端创建服务引用
- excel - 在另一个工作表中搜索第一个工作表名称并插入该列数据
- python - 如何制作计数向量 - Python
- mysql - 更新查询计数的内部联接
- laravel - 当我们在 Laravel 5.7 中使用条件子句时如何用括号包装 Eloquent 查询
- angular - 角。如何将现有的控件值访问器包装在我自己的控件中?