我有一个我想要转换的合作伙伴的系统状态页面,以便我可以自动将其输入到我的服务页面。服务的状态由<span>
类提供。我知道这远非理想,但这是他们提供更新的唯一方式。
以下是HTML的副本:
<ul class="item-3">
<li class="status service1">
<span class="icon"></span>
<h6>
SERVICE 1
</h6>
<p>
Updated:
9:52 AM CST Apr, 24
</p>
<span class="arrow up"></span>
</li>
<li class="status service2">
<span class="icon"></span>
<h6>
SERVICE 2
</h6>
<p>
Updated:
9:52 AM CST Apr, 24
</p>
<span class="arrow up"></span>
</li>
<li class="status service3">
<span class="icon"></span>
<h6>
SERVICE 3
</h6>
<p>
Updated:
9:52 AM CST Apr, 24
</p>
<span class="arrow up"></span>
</li>
</ul>
我需要获取<span class="arrow up">
值,因为这是服务状态,<li class="status service3">
因为这会告诉我它是什么服务。
由于我的状态页API使用的是ID,而不是&#34; up / down&#34;等我将需要状态和服务在数组中,所以我可以将它们转换为我的格式 - 希望这是有道理的!
答案 0 :(得分:0)
使用loadHTML
方法
<?php
$str = '<h1>T1</h1>Lorem ipsum.<h1>T2</h1>The quick red fox...<h1>T3</h1>... jumps over the lazy brown FROG';
$DOM = new DOMDocument;
$DOM->loadHTML($str);
//get all H1
$items = $DOM->getElementsByTagName('h1');
//display all H1 text
for ($i = 0; $i < $items->length; $i++)
echo $items->item($i)->nodeValue . "<br/>";
?>
输出:
T1
T2
T3
答案 1 :(得分:0)
我并不完全确定你想要达到的目标,但我会做出一些假设来澄清我所说的话:
我假设你自己没有生成HTML,但是你想要从问题中出现的HTML中获取某些元素,从而无法将完整的HTML分配给变量。
跨度中的两个可能类可以是&#34;向上箭头&#34; 或&#34;箭头向下&#34; < / em>(事实上,这是两个类,即&#34; arrow&#34; 和&#34; up&#34; (或者&#34; down&#34;)。因此,如果你想获取这些span元素的所有实例,你可以简单地执行以下操作:
$ElementsArray = document.getElementsByClassName("arrow");
这将为您提供班级所有元素的数组&#34; arrow&#34;无论他们是否也包含课程&#34; up&#34;或者课程&#34; down&#34;。如果你想只能选择所有&#34; up&#34;或&#34; down&#34;你也可以这样做:
$arrayOfUps = document.getElementsByClassName("up");
假设有更多元素包含&#34; up&#34; (例如&#34;电梯上升&#34; ,& #34;七个&#34; 等)您也可以使用相同的函数来搜索包含两个类名的元素,如下所示:
$arrayOfUps = document.getElementsByClassName("arrow up");
通过这种方式,您确保不会获得包含以下内容的元素:
class =&#34; seven up&#34;,class =&#34; Elev up&#34;等
如果您只想获得所有箭头实例的数组(&#34; up&#34;或&#34; down&#34;)并遍历每个实例,您当然可以执行以下操作:
$searchFor = "arrow";
$results = array();
$arrCounter=0;
var $elementsList= document.getElementsByClassName("arrow");
for ($i=0; i < $elementsList->length; i++) {
$temp = $elementsList->item($i);
if (stripos($temp->getAttribute('class'), $searchFor) !== false) {
$results[$arrCounter] = ( stripos($temp->getAttribute('class'), "up") !== false ) ? "UP" : "DOWN" ;
$arrCounter++;
}
}
list-items也一样。
这绝不是优雅的编码,我也会把它变成一个函数,但我只想建议PHP DOM函数用于你建议的目的。
英语不是我的第一语言,所以我可能完全错过了你的观点,在这种情况下,我提前道歉。