PHP从文件夹中回显几个<img/>

时间:2018-09-27 07:43:50

标签: php html

所以我基本上有以下代码:

<?php
    $lang = isset($_GET['lang']) ? $_GET['lang'] : NULL;
    $langArray = array('en', 'de', 'fr', 'es', 'it');

    $img = "<img src='img/".$lang."/1.png' />";
?>

[some useless code here...]

<div class="col ">
    <?php echo $img; ?>
    <p>Here some text under the img</p>
</div>

根据选择的语言,它将显示不同的图像。如您所见,图像存储在带有语言名称的文件夹中。例如,如果您为英语选择“ en”,则图片显示为/img/en/1.png

我的问题是我在这些文件夹中有多张图片(1.png,2.png ... 5.png)。而不是这样写:

<?php
    $lang = isset($_GET['lang']) ? $_GET['lang'] : NULL;
    $langArray = array('en', 'de', 'fr', 'es', 'it');

    $img = "<img src='img/".$lang."/1.png' />";
    $img = "<img src='img/".$lang."/2.png' />";
    $img = "<img src='img/".$lang."/3.png' />";
    $img = "<img src='img/".$lang."/4.png' />";
    $img = "<img src='img/".$lang."/5.png' />";

?>

有没有一种方法可以循环回显这些图片?我是PHP的新手,不确定应该写什么。

谢谢。

3 个答案:

答案 0 :(得分:2)

  • 您可以使用for$i循环播放。
  • 别忘了用.=来表达自己的价值观。

您可以像这样循环:

<?php
    $lang = isset($_GET['lang']) ? $_GET['lang'] : NULL;
    $langArray = array('en', 'de', 'fr', 'es', 'it');

    if (!is_null($lang)) {
        $img = '';
        for($i=1;$i<=5;$i++) {
            $img .= "<img src='img/".$lang."/".$i.".png' />";
        }
    }
?>

答案 1 :(得分:1)

作为@Jouby做出的回答(这是您需要的循环)的补充,我希望您指出您的代码并不真正安全...

直接在输出中使用$ _GET参数会带来麻烦。请先转义该值(例如,使用htmlspecialchars()),甚至更好: 检查$ lang的值是否是$ langArray中的元素(例如,通过使用in_array())。这样,您就知道将在代码中放入什么值。

只是想一想:如果$ _GET ['lang']包含这样的内容怎么办?

"<script>alert('I can steal your session (or worse!)');</script>

答案 2 :(得分:0)

您可以像这样在html中使用循环

<?php for($i = 1; $i <= 5; $i++): ?>
    <img src="img/<?= $lang ?>/<?= $i ?>.png" />
<?php endfor; ?>

<?=<?php echo