我的问题的简短版本:有没有一种方法可以使用PHP来回显包含图像的目录的URL?
长版本:大家好,我正在开发一个简单的CMS(如果相关的话,使用Kirby(,除了一件事,我几乎所有的东西都能工作。Kirby是一个基于文件的CMS,每个文件夹都有自己的页面。我设置了它,这样文件夹中的所有图像都会自动放在页面上。这一切都很好,但问题是,我想在每个项目文件夹中都有一个子文件夹,其中包含更大版本的图像。我不想使用自动缩略图插件,或者灯箱之类的东西。我想手动保存这两个版本的图像。我设想了这样的事情:通过点击"缩略图"图像
website.com/projects/01-test/cat.jpg
可以打开更大的图像
website.com/projects/01-test/large/cat-large.jpg)
我希望我能以某种方式使用PHP来显示图像目录的完整URL,而不是图像本身的名称。我最近使用的是:
<?php echo $image->url(); ?>
但这给了http://website.com/projects/01-test/cat.jpg而我只需要http://website.com/projects/01-test.
如果我能以某种方式实现自动化,那么我想我可以做一些类似的事情:
<a href="<?php echo $image->MYSTERY(); ?>/large/<?php echo $image->name(); ?>-large.jpg">
好吧,我希望这是有道理的。我正在学习PHP,所以我很抱歉,如果这之前已经涵盖了——我试过到处搜索,但可能只是我不太知道该搜索什么。如果您能提供任何帮助,我们将不胜感激!
您可能正在查看dirname()
:
<?php echo dirname($image->url()); ?>
例如:
echo dirname('http://example.org/path/to/picture.jpg');
// http://example.org/path/to
将URL分解为数组并删除最后一个元素。using explode() - array_pop() - implode()
像这样:
$arrayofurl = explode("/", $url);
array_pop($arrayofurl);
$final = implode("/",$arrayofurl);
根据您的问题,我假设$image->url();
返回完整的图像URL,$image->name();
返回图像的名称(不带文本(,对吗?
所以我认为这应该奏效,不是吗?
$urlPath = str_replace($image->name() . '.jpg', '', $image->url());
printf('<a href="%slarge/%s-large.jpg"><img src="%s"/></a>', $urlPath, $image->name(), $image->url());
更新:忘记这个答案,只使用dirname()
。
只是为了好玩,下面是一个JS替代方案,它将迭代所有图像链接并设置XL图像路径:
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<a href="#"><img src="test.jpg"/></a><hr>
<a href="#"><img src="test2.jpg"/></a><hr>
<a href="#"><img src="test3.jpg"/></a>
<script>
for(var a = document.getElementsByTagName("a"), b = 0;b < a.length;b++) {
var c = a[b], d = new String(c.children[0].src), e = d.replace(/\/g, "/").replace(//[^/]*/?$/, ""), f = d.replace(e, "");
c.href = e + "/large" + f.replace(".jpg", "-large.jpg")
}
;
</script>
</body>
</html>