我有一个HTML文件,其中包含许多只有"li“的标记,没有head和body标记,也没有其他任何东西。我想用PHP对它们进行计数。我该怎么做呢?
不过,我尝试了一下:
$dom = new DOMDocument();
DOMDocument::loadHTML($tmp_file);
$count = $dom->getElementsByTagName("li");
echo count($count);
但它返回1。
这是$tmp_file (我不知道将检索到多少个(可能有数百个),但我只是在这里添加了5个):
<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/شکست-تیم-«الف»-والیبال-ساحلی-ایران-مقابل-هلند" target="_blank" title="شکست تیم «الف» والیبال ساحلی ایران مقابل هلند">شکست تیم «الف» والیبال ساحلی ایران مقابل هلند</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>
发布于 2017-09-12 14:07:44
这个问题的要点是,我只想实现一个标记并获取它们的链接,我只想使用解析,但有时您应该在脑海中使用英特尔i9并更好地思考,所以我不是获取<li>
标记,而是直接针对<a>
标记,它是有效的:
代码如下:
$this->dom = new DOMDocument();
@$this->dom->loadHTMLfile($tmp_file);
$this->as = $this->dom->getElementsByTagName('a');
foreach($this->as as $a) { ...
由于这些条目都被保存到数据库中,因此我无法使用MySQL查询从数据库中获取它们的数量,仅此而已!
发布于 2017-07-12 16:10:58
你们已经很接近了。
试试这个:
$count = $dom->getElementsByTagName("li")->length;
并将此echo count($count);
更改为echo $count
发布于 2017-07-12 16:16:14
首先,loadHTML从字符串中的超文本标记语言加载。如果文件名为$tmp_file,则应使用loadHTMLFile。
此外,loadHTML不是静态的,因此您需要执行$dom->loadHTML($tmp_file);
现在是问题的答案。
getElementsByTagName()
返回的是一个DOMNodeList。作为一个对象,count()
函数可能只会说1,但是DOMNodeList有一个名为length
的属性。如果只查询li
元素,然后读取length
,它将给出li
元素的数量。
作为测试:
$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>
元素。
https://stackoverflow.com/questions/45051921
复制相似问题