用于填充html ul列表的PHP代码

时间:2011-03-08 17:16:47

标签: php html

我有这个PHP代码,它试图填充HTML ul列表。

我不确定如何把它放在一起。这是PHP:

<?php
    $type = 'c';

    $imagesDir = '/prettyphoto/images/';

    $images = glob($imagesDir . $type . '*[TYPE].{jpg,jpeg,png,gif}', GLOB_BRACE);
?>
<ul>
<?php foreach($images as $image): ?>
   <li><a href="<?php echo str_replace('[TYPE]', 'F', $image); ?>"><img src="<?php echo str_replace('[TYPE]', 'T', $image); ?></a>" alt="" /></li>
<?php endforeach; ?>
</ul>

这是HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php
$type = 'N';

$imagesDir = '/prettyphoto/images/thumbnails';

$images = glob($imagesDir . $type . '*[TYPE].{jpg,jpeg,png,gif}', GLOB_BRACE);
?>

<ul>
<?php foreach($images as $image): ?>
   <li><a href="<?php echo str_replace('[TYPE]', 'F', $image); ?>"><img src="<?php echo str_replace('[TYPE]', 'T', $image); ?>" alt="" /></a></li>
<?php endforeach; ?>
</ul>

</body>
</html>

编辑:这个简化的脚本适合我:

<ul>
<?php
foreach (glob("N*T.jpg") as $image): ?>
<li>
  <a href="<?php echo str_replace("T", "F", $image); ?>">
    <img src="<?php  echo "$image"; ?>">
  </a>
</li>
<?php endforeach; ?>
</ul>

5 个答案:

答案 0 :(得分:2)

现在的代码有点奇怪,因为前几行是PHP,但它们没有包装在标签中。我还建议你修改你的问题,以更具体地说明你想要发生什么。

与此同时,我会为您解释代码,以便您更好地了解正在发生的事情。

$type = 'c';

此行似乎修改了路径选择的参数。截至目前,它表明您只选择以字母'c'开头的文件。

$imagesDir = '/prettyphoto/images/';

您可以在此处指定图像目录(文件位于服务器上)。

$images = glob($imagesDir . $type . '*[TYPE].{jpg,jpeg,png,gif}', GLOB_BRACE);

这一行的基本思想是收集符合特定表格的文件列表。您可以通过查看PHP manual for it

了解有关此功能的更多信息
<ul>
<?php foreach($images as $image): ?>
   <li><a href="<?php echo str_replace('[TYPE]', 'F', $image); ?>"><img src="<?php echo str_replace('[TYPE]', 'T', $image); ?></a>" alt="" /></li>
<?php endforeach; ?>
</ul>

这段代码很直接 - 它只是遍历图像并显示每个图像。 foreach方法获取列表并为列表中的每个项运行一次代码。内部事物只是使用当前项目的信息构建HTML图像标记。


由于PHP是一种脚本语言,您可以将这段代码保存在一起,也可以将其分开以将变量定义放在页面顶部,将HTML部分放在HTML中。你只需保持相同的顺序。

关键是输出<ul></ul>内容,您应该将其放在页面上显示的任何位置。 $ images代码可以随时出现,只要它出现在<ul>代码之上。


看起来你的问题是[TYPE]没有做你期望它做的事情。现在它正在定义一个字符类,所以它选择字母'T''Y''P'或'E'的文件。

尝试通过将其更改为:删除glob字符串中的[TYPE]子句: $ images = glob($ imagesDir。$ type。'*。{jpg,jpeg,png,gif}',GLOB_BRACE);

然后尝试使用print_r($ images)查看图像列表,以帮助您进行调试。


请务必阅读有关glob的工作原理!它将节省您的调试时间。

如果要在特定路径中查找图像,只需将该路径添加到glob字符串即可。

换句话说,如果你想要'/ prettyphoto / images /'中的所有图像,你会改变

glob("N*T.jpg")

glob("/prettyphoto/images/N*T.jpg")

答案 1 :(得分:1)

在PHP打开/关闭标签"<?php ?>"中包装PHP代码。还要确保正确放置打开/关闭html标签。

<?php
$type = 'c';

$imagesDir = '/prettyphoto/images/';

$images = glob($imagesDir . $type . '*[TYPE].{jpg,jpeg,png,gif}', GLOB_BRACE);
?>
<ul>
<?php foreach($images as $image): ?>
<li><a href="<?php echo str_replace('[TYPE]', 'F', $image); ?>"><img src="<?php echo str_replace('[TYPE]', 'T', $image); ?>" alt="" /></a></li>
<?php endforeach; ?>

</ul>

答案 2 :(得分:1)

您已将</a>标记放在<img>标记内。

<li><a href="<?php echo str_replace('[TYPE]', 'F', $image); ?>"><img src="<?php echo str_replace('[TYPE]', 'T', $image); ?>" alt="" /></a></li>

答案 3 :(得分:0)

问题在于您的HTML:

<a href="<?php echo str_replace('[TYPE]', 'F', $image); ?>"><img src="<?php echo str_replace('[TYPE]', 'T', $image); ?></a>" alt="" />

应该是:

<a href="<?php echo str_replace('[TYPE]', 'F', $image); ?>"><img src="<?php echo str_replace('[TYPE]', 'T', $image); ?>" alt="" /></a>

您的</a>位于错误的位置。

答案 4 :(得分:-3)

您还有一些基本的语法错误。 PHP使用大括号{ ... }围绕foreach,并且没有endforeach命令,您只需使用终止大括号。第二部分应如下所示:

<?php foreach($images as $image) { ?>
    <li>
        <a href="<?php echo str_replace('[TYPE]', 'F', $image); ?>">
            <img src="<?php echo str_replace('[TYPE]', 'T', $image); ?>
        </a>
    </li>
<?php } ?>