首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用php计算html文件中的li项

使用php计算html文件中的li项
EN

Stack Overflow用户
提问于 2017-07-12 16:07:06
回答 10查看 1.6K关注 0票数 11

我有一个HTML文件,其中包含许多只有"li“的标记,没有head和body标记,也没有其他任何东西。我想用PHP对它们进行计数。我该怎么做呢?

不过,我尝试了一下:

代码语言:javascript
复制
$dom = new DOMDocument();
DOMDocument::loadHTML($tmp_file);
$count = $dom->getElementsByTagName("li");
echo count($count);

但它返回1。

这是$tmp_file (我不知道将检索到多少个(可能有数百个),但我只是在这里添加了5个):

代码语言:javascript
复制
<li >
    <a target="_blank" class="small-news-link" href="http://www.varzesh3.com/news/1426832/میروسلاو-ژیوکو-سرمربی-تیم-والیبال-سایپا-شد" target="_blank" title="میروسلاو ژیوکو سرمربی تیم والیبال سایپا شد">میروسلاو ژیوکو سرمربی تیم والیبال سایپا شد</a>
</li>
<li >
    <a target="_blank" class="small-news-link" href="http://www.varzesh3.com/news/1426824/فدرر-از-نظر-فیزیکی-شرایط-سال-قبل-را-ندارم" target="_blank" title="فدرر: از نظر فیزیکی شرایط سال قبل را ندارم">فدرر: از نظر فیزیکی شرایط سال قبل را ندارم</a>
</li>
<li >
    <a target="_blank" class="small-news-link" href="http://www.varzesh3.com/news/1426817/شکست-تیم-&#171;الف&#187;-والیبال-ساحلی-ایران-مقابل-هلند" target="_blank" title="شکست تیم &#171;الف&#187; والیبال ساحلی ایران مقابل هلند">شکست تیم &#171;الف&#187; والیبال ساحلی ایران مقابل هلند</a>
</li>
<li class="news-video">
    <a target="_blank" class="small-news-link" href="http://www.varzesh3.com/news/1426815/5-حرکت-دیدنی-در-لیگ-تابستان-NBA؛-96-04-21" target="_blank" title="5 حرکت دیدنی در لیگ تابستان NBA؛ 96/04/21">5 حرکت دیدنی در لیگ تابستان NBA؛ 96/04/21</a>
</li>
<li >
    <a target="_blank" class="small-news-link" href="http://www.varzesh3.com/news/1426813/معرفی-هیات-مدیره-جدید-صندوق-حمایت-از-پیشکسوتان" target="_blank" title="معرفی هیات مدیره جدید صندوق حمایت از پیشکسوتان">معرفی هیات مدیره جدید صندوق حمایت از پیشکسوتان</a>
</li>
<li >
    <a target="_blank" class="small-news-link" href="http://www.varzesh3.com/news/1426808/رحیمی،-یزدانی-و-قاسمی-در-رده-اول-تا-سوم-جهان" target="_blank" title="رحیمی، یزدانی و قاسمی در رده اول تا سوم جهان">رحیمی، یزدانی و قاسمی در رده اول تا سوم جهان</a>
</li>
<li >
    <a target="_blank" class="small-news-link" href="http://www.varzesh3.com/news/1426792/جوکوویچ-منتظر-رویارویی-با-بردیچ-هستم" target="_blank" title="جوکوویچ: منتظر رویارویی با بردیچ هستم">جوکوویچ: منتظر رویارویی با بردیچ هستم</a>
</li>
EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2017-09-12 14:07:44

这个问题的要点是,我只想实现一个标记并获取它们的链接,我只想使用解析,但有时您应该在脑海中使用英特尔i9并更好地思考,所以我不是获取<li>标记,而是直接针对<a>标记,它是有效的:

代码如下:

代码语言:javascript
复制
$this->dom = new DOMDocument();
@$this->dom->loadHTMLfile($tmp_file);
$this->as = $this->dom->getElementsByTagName('a');
foreach($this->as as $a) { ...

由于这些条目都被保存到数据库中,因此我无法使用MySQL查询从数据库中获取它们的数量,仅此而已!

票数 2
EN

Stack Overflow用户

发布于 2017-07-12 16:10:58

你们已经很接近了。

试试这个:

代码语言:javascript
复制
$count = $dom->getElementsByTagName("li")->length;

并将此echo count($count);更改为echo $count

票数 4
EN

Stack Overflow用户

发布于 2017-07-12 16:16:14

首先,loadHTML从字符串中的超文本标记语言加载。如果文件名为$tmp_file,则应使用loadHTMLFile。

此外,loadHTML不是静态的,因此您需要执行$dom->loadHTML($tmp_file);

现在是问题的答案。

getElementsByTagName()返回的是一个DOMNodeList。作为一个对象,count()函数可能只会说1,但是DOMNodeList有一个名为length的属性。如果只查询li元素,然后读取length,它将给出li元素的数量。

作为测试:

代码语言:javascript
复制
$dom = new DOMDocument();
$dom->loadHTML("<li>test 1</li><li>test 2</li><li>test 3</li><li>test 4</li>");
$count = $dom->getElementsByTagName("li");
echo $count->length; //Prints 4

<ul>中,我设置了四个<li>元素。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45051921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档