我正在寻找一种方法来使用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>
答案 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>