将页面div内的列表项目数导出到另一页面

时间:2012-09-29 20:18:28

标签: php html html-lists return

我正在寻找一种方法来使用PHP执行以下操作。

文件夹/部分/中有多个页面。 red.html,blue.html,green.html。并且在服务器的根目录中有一个index.html页面。

在每个页面上,都有一个带有id“list”的div,其中包含带有列表项的ul。如何在/ section /中的每个页面上检索此div中的列表项数量,并在index.html页面上返回每个列表项的数量。

为了更好地说明它:

每页上的结构:

<div id="list">
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>

    red.html (33 list items within #list)
    blue.html (20 list items within #list)
    green.html (15 list items within #list)

    index.html:

    **Stats:**
    Red: <php here fetching the number from red.html>
    Blue: <php here fetching the number from blue.html>
    Green: <php here fetching the number from green.html>

2 个答案:

答案 0 :(得分:0)

嗯,你有一些选择。 .html表明我们正在谈论静态html文件,所以让我们使用它。

1。)因为它都是静态的,你需要打开这些文件并解析它们(手动或者使用某些第三方库,如果存在的话)。然后你只输出结果。

2。)将静态html文件转换为php和html列表到数组。在红色,蓝色和绿色文件中,您需要通过这些数组进行枚举,然后输出它们以获得相同的效果。但是,在index.php中,您需要做的就是包含这些文件并直接从这些可用的数组中获取信息。我相信你知道如何获得数组的元素数量,对吗?

编辑:

根据评论中的要求,我将尝试向您展示一个示例。这里最简单的方法可能就是使用第二个选项..而不是使用静态类型的html列表,创建包含项目的php变量 - 数组。如果您需要显示这些项目,只需循环遍历此集合并根据需要进行回显。如果需要获取数组中的元素数,只需使用php函数count(...)

显示项目的示例:

red.php

$someArray = array("one", "two", "three");

foreach ($someArray as $i -> $value)
{
    echo '<li>'.$value'.<li>';
}

的index.php

include_once 'red.php';

echo 'Count of elements in red.php: '.count($someArray);

或类似的东西,希望你明白这一点。

答案 1 :(得分:0)

您可以在索引中执行以下操作,但必须使用PHP,因此您需要将其重命名为index.php。

$sections = new DirectoryIterator('/path/to/sections');
$stats = array();

foreach($sections as $file) {
  if(!$file->isDot() && $file->isFile()) {
     $name = $file->getName();
     $path = $file->getPathname();
     $key =  str_replace('.html', '', $name);

     // load the html
     $dom = new DOMDocument();
     $dom->loadHTML($path);

     // get the LI of the list via xpath query
     $xpath = new DOMXPath($dom);
     $elements = $xpath->query("//ul[@id='list']/li");

     // assign the stat
     $stats[$key] = $elements->length;

     // free up some memory
     unset($elements, $xpath, $dom);
  }
}

之后你需要迭代$stats并输出你的计数。如下所示:

<dl>
<?php foreach($stats as $label => $count): ?>
  <dt><?php echo $label ?></dt>
  <dd><?php echo $count ?></dd>
<?php endforeach ?>
</dl>