【问题标题】:Export number of list items within a div on a page to another page将页面上 div 中的列表项数导出到另一个页面
【发布时间】:2012-09-21 06:59:07
【问题描述】:

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

文件夹 /section/ 中有多个页面。红色.html、蓝色.html、绿色.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>

【问题讨论】:

  • 所以你想使用 php 从所有这些页面中获取 li 并将它们显示在一个页面上。这就是你想要的吗??
  • 我正在尝试找到一种方法来获取 div 内每个单独页面上的 li 总数,并将总数返回到根目录中的 index.html 页面。如果 red.html 上的#list 中有 20 个列表项,我希望将数字显示在根目录的 index.html 页面上。

标签: php html html-lists return


【解决方案1】:

您可以在索引中执行以下操作,但必须使用 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>

【讨论】:

    【解决方案2】:

    嗯,你有一些选择。 .html 建议我们讨论的是静态 html 文件,所以让我们来处理它。

    1.) 因为它都是静态的,所以您需要打开这些文件并解析它们(手动或可能使用一些 3rd 方库,如果存在的话)。然后你就输出结果。

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

    编辑:

    根据 cmets 的要求,我将尝试向您展示一个示例。可能这里最简单的方法是使用第二个选项。而不是使用静态类型的 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);
    

    或者类似的东西,希望你明白。

    【讨论】:

    • 是的,它们都是静态的,没有 CMS 或任何东西。不幸的是,我只熟悉 HTML/CSS,而且我还刚刚开始使用 PHP 等语言。我的 .htaccess 设置允许我在我的 html 文件中包含 PHP,但是,我不够熟悉,无法准确理解您告诉我的内容。你能试着用一些例子一步一步地解释吗?如果我要求太多,我很抱歉。
    • @Nux,我刚刚添加了一个例子,希望现在更清楚一点。
    • 抱歉,回复延迟,我对所有 PHP 术语还不是很肯定,但我想我明白了。您的示例很有帮助,我现在将尝试代码,看看我是否有正确的理解。感谢您再次解释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 2015-02-01
    • 1970-01-01
    • 2019-05-09
    • 2015-10-24
    相关资源
    最近更新 更多