我的代码需要一些帮助。我想从流标签中解析每个元素,但我无法找到如何做到这一点。
当我尝试这个时:
$streams_url = $xpath->query("//span[@id='streams'"]);
我会得到这样的东西:
serverip page isn’t working
serverip is currently unable to handle this request.
HTTP ERROR 500
这是php:
<?php
ini_set('max_execution_time', 300);
$errmsg_arr = array();
$errflag = false;
function getState($string)
{
$ex = explode(" ",$string);
return $ex[1];
}
$baseUrl = file_get_contents('http://myserverip/get-listing.php');
$domdoc = new DOMDocument();
$domdoc->strictErrorChecking = false;
$domdoc->recover=true;
@$domdoc->loadHTML($baseUrl);
$links = $domdoc->getElementsByTagName('a');
$i = 0;
$count = 0;
$streams_url = $xpath->query("//span[@id='streams'"]);
echo $streams_url;
$data = array();
>?
这是html数据:
<a id="link1" href="http://myserverip/getlisting.php?channel=skyatlantic">http://myserverip/getlisting.php?channel=Sky Atlantic&id=108</a><br><br><a id="streams" href="rtmp://www.testserver.com/skyatlantic">Stream 1</a>
这是我想要实现的目标:
http://www.testserver.com/stream01
我想从stream标签中解析每个元素。
你能告诉我如何用PHP做到这一点吗?
答案 0 :(得分:0)
由于您正在寻找id
,因此您实际上并不需要使用XPath。这将完成这项工作:
$el = $domdoc->getElementById('streams');
$url = $el->getAttribute('href');
在评论中提到您有重复的id
值:这是无效的HTML。但您可以按如下方式处理它们:
$streams_url = $xpath->query("//*[@id='streams']");
foreach($streams_url as $a) {
$url[] = $a->getAttribute("href");
}
print_r($url); // array of href values