1

嗨,我在一个文件夹中有 2000 个 html 文件,它们的名称如下所示:

01_001.html
01_002.html
01_003.html
01_004.html
02_001.html
02_002.html
02_003.html
........
33_001.html
33_002.html
33_003.html
...... ........
33_123.html

我想为所有 2000 个 HTML 文件添加一个链接/脚本,这些文件将动态转到同一文件夹中的下一个/上一个 HTML 页面

我知道如何在 PERL 中添加它,但是这种链接/脚本在 JavaScript/jQuery 中应该是什么样的

我试过这个脚本:

<a href="#" onClick="movePrv();">Previous</a> end <a href="#" onClick="moveNext();">Next</a>

但它不起作用。有任何想法吗?

4

3 回答 3

1

PHP 中的解决方案可能如下所示:

<?php
$file = basename(__FILE__);
$chap = substr($file, 0, 2);
$cat = substr($file, 3, 3);
$prevFile = sprintf("%1$02d_%2$03d.php", $chap, ($cat-1));
$nextFile = sprintf("%1$02d_%2$03d.php", $chap, ($cat+1));
echo($prevFile);
echo($nextFile);

$isFirst = ($cat == "000");
$isLast = !file_exists($nextFile);
?>

使用变量$nextFile$prevFile创建链接。您可能还想检查当前文件是一章中的第一个还是最后一个,然后不显示上一个或下一个链接。

于 2012-07-12T08:58:12.313 回答
1

我假设使用默认的 Perl 排序会使文件名按正确的顺序排列,这对于提供的示例数据肯定足够了。如果没有,请查看Sort::Naturally

我假设每个文件都包含字符序列</head,表示 HTML 标头的结尾。我之前插入了链接关系。对于高度不规则的标记,需要一个 HTML 解析器,例如Web::Query

该代码将以环/Ouroboros 方式链接所有文件。数组索引-1 DTRT和指向最后一个数组元素。

未经测试的代码:

use 5.012;  # for "each @array"
use File::Slurp qw(read_file write_file);

my @order = sort qw(
    01_001.html
    01_002.html
    01_003.html
    01_004.html
    02_001.html
    02_002.html
    02_003.html
    33_001.html
    33_002.html
    33_003.html
    33_123.html
);
while (my ($i, $curr_file) = each @order) {
    my $next_file = $order[$i + 1];
    my $prev_file = $order[$i - 1];
    my $content = read_file $curr_file, { binmode => ':raw' };
    $content =~ s
        {</head}
        {
            <link rel="next" href="$next_file">
            <link rel="prev" href="$prev_file">
            </head
        };
    write_file $curr_file, {binmode => ':raw'}, $content;
}
于 2012-07-12T09:56:30.927 回答
-1

创建一些服务器端 PERL 脚本以返回下一个/上一个文件名。在 Javascript 中,您可以使用 AJAX 方法获取文件的下一个或上一个文件名,然后重定向。我认为这是您拥有的可行且最简单的选择。

于 2012-07-12T08:10:31.140 回答