0

私の質問の短いバージョン:PHPを使用して画像を含むディレクトリのURLをエコーする方法はありますか?

長いバージョン:こんにちは、私は単純なCMSに取り組んでいます(関連する場合はKirbyを使用しています)。1つを除いてほとんどすべてが機能しています。カービィはファイルベースの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を学習しているので、これまでに説明したことがあるかどうかをお詫びします。どこでも検索を試みましたが、何を検索すればよいかわからない可能性があります。あなたが提供できるどんな助けでも大いに感謝されるでしょう!

4

3 に答える 3

4

あなたはおそらく見ているdirname()

<?php echo dirname($image->url()); ?>

例えば:

echo dirname('http://example.org/path/to/picture.jpg');
// http://example.org/path/to
于 2013-03-20T01:44:53.683 に答える
0

URL を展開して配列にし、最後の要素を削除します。using explode() - array_pop() - implode()このような:

$arrayofurl = explode("/", $url);
array_pop($arrayofurl);
$final = implode("/",$arrayofurl);
于 2013-03-20T01:26:43.470 に答える
0

あなたの質問から$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()ください。

楽しみのために、すべての画像リンクを反復処理して XL 画像パスを設定する JS の代替を以下に示します。

<!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>
于 2013-03-20T01:41:36.760 に答える