如何制作简单的路径生成器?

时间:2010-06-07 19:01:00

标签: php html

我有一个链接,我必须重复50次,每个文件夹,我有15个文件夹。我必须重复的链接看起来像这样:

<a href="update/images/Cars/car (x).JPG" rel="lightbox[cars]"></a>

现在,jpg文件被命名为car 1- car 50.我真的希望能够生成这个脚本,以便我可以输入路径“update / images / Cars /”图片标题(car)和输入我需要这个链接的次数,然后让它吐出一些看起来像这样的东西:

<a href="update/images/Cars/car (1).JPG" rel="lightbox[cars]"></a>
<a href="update/images/Cars/car (2).JPG" rel="lightbox[cars]"></a>
<a href="update/images/Cars/car (3).JPG" rel="lightbox[cars]"></a>
<a href="update/images/Cars/car (4).JPG" rel="lightbox[cars]"></a>
<a href="update/images/Cars/car (5).JPG" rel="lightbox[cars]"></a>
<a href="update/images/Cars/car (6).JPG" rel="lightbox[cars]"></a>

然后它不断重复,我假设这可以用计数器完成,但我不确定。谢谢!

3 个答案:

答案 0 :(得分:2)

您可以使用for循环执行此操作:

$path = "update/images/Cars/";
$title = "car";
$times = 50;

for($i = 1; $i <= $times; $i++)
    echo "<a href=\"$path$title ($i).JPG\" rel=\"lightbox[$title]\"></a>\n";

我使用$title作为lightbox参数,因为你没有指定

答案 1 :(得分:2)

使用功能强大的文本编辑器。 ; - )

例如,在Vim中,我可以使用以下按键序列来创建所需的文本:

  • <a href="update/images/Cars/car (0).JPG" rel="lightbox[cars]"></a> ESC
  • q a (开始将宏记录到寄存器a
  • Y (yank(= copy)整行)
  • p (粘贴到以下行)
  • / ( 返回(搜寻大括号)
  • Space (将光标提前一个字符,使其现在位于数字上)
  • Ctrl + a (递增数字)
  • q (停止录制宏)
  • 4 9 @ a (调用宏49次)

答案 2 :(得分:0)

如果要添加或删除文件夹中的图像,则可以使用标准PHP库中的DirectoryIterator对象获得更好的结果。使用它需要PHP5,但也有一种老式的处理方式。此代码段假定目录中的所有文件都是您要列出的图像:

$link = '<a href="/path/to/update/images/Cars/%s" rel="lightbox[cars]">%s</a>';
$dir = new DirectoryIterator("/path/to/update/images/Cars");
foreach($dir as $file) if(!$file->isDot()) echo sprintf($link, $file, $file);

请注意,我将有关anchor-element的信息放入$ link变量中,然后使用sprintf将这些锚点打印到屏幕上。如果你没有PHP5,你可以这样做:

$link = '<a href="/path/to/update/images/Cars/%s" rel="lightbox[cars]">%s</a>';
$dir = opendir("/path/to/update/images/Cars");
while(($file = readdir($dir)!==false) if($file != "." && $file != "..") echo sprintf($link, $file, $file);
closedir($dir);

只有在您向库中添加更多车照并且不想更新产生所有链接的页面时,才需要这些。这两个片段都应自动搜索汽车图像目录并创建所需的链接。

您还可以更改这些片段以搜索子目录,这样您就可以使用更多代码来删除所有15个文件夹中图像的链接。如果您想查看该代码,请告诉我。