代码之家  ›  专栏  ›  技术社区  ›  Ryan

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

  •  1
  • Ryan  · 技术社区  · 14 年前

    我有一个链接,每个文件夹重复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 回复  |  直到 9 年前
        1
  •  2
  •   Michael Mrozek    14 年前

    你可以用 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 参数,因为您没有指定

        2
  •  2
  •   Konrad Rudolph    14 年前

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

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

    • <a href="update/images/Cars/car (0).JPG" rel="lightbox[cars]"></a> ESC
    • Q (开始将宏记录到寄存器中 a )
    • Y (整行)
    • (粘贴到下一行)
    • / ( 返回 (搜索左大括号)
    • 空间 (将光标向前移动一个字符,使其现在位于数字上)
    • Ctrl键 + (增加数字)
    • Q (停止录制宏)
    • @ (调用宏49次)
        3
  •  0
  •   Dash    14 年前

    如果要添加或删除文件夹中的图像,则可以使用 DirectoryIterator 来自标准PHP库的对象。使用它需要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);
    

    注意,我将锚元素的信息放入$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个文件夹中删除指向图像的链接,所有这些文件夹都有一点代码。如果你也想看到代码,请告诉我。