Php 简单HTMLDOM解析器-使用随机数查找类
我正试图从一个网站上删除数据。我坚持收视率。 他们有这样的东西:Php 简单HTMLDOM解析器-使用随机数查找类,php,html,dom,html-parsing,Php,Html,Dom,Html Parsing,我正试图从一个网站上删除数据。我坚持收视率。 他们有这样的东西: <div class="rating-static rating-10 margin-top-none margin-bottom-sm"></div> <div class="rating-static rating-13 margin-top-none margin-bottom-sm"></div> <div class="rating-static rating-46
<div class="rating-static rating-10 margin-top-none margin-bottom-sm"></div>
<div class="rating-static rating-13 margin-top-none margin-bottom-sm"></div>
<div class="rating-static rating-46 margin-top-none margin-bottom-sm"></div>
在我的剧本中,rating-10
实际上是一颗星,rating-13
两颗星,rating-46
将是五颗星
额定范围可以是0-50
我的计划是创建开关
,如果我得到1-10的等级范围,我将知道这是一颗星,11-20是两颗星,依此类推
任何想法,任何帮助都将不胜感激。试试这个
<?php
$data = '<div class="rating-static rating-10 margin-top-none margin-bottom-sm"></div>';
$dom = new DOMDocument;
$dom->loadHTML($data);
$xpath = new DomXpath($dom);
$div = $dom->getElementsByTagName('div')[0];
$div_style = $div->getAttribute('class');
$final_data = explode(" ",$div_style);
echo $final_data[1];
?>
试试这个
<?php
$data = '<div class="rating-static rating-10 margin-top-none margin-bottom-sm"></div>';
$dom = new DOMDocument;
$dom->loadHTML($data);
$xpath = new DomXpath($dom);
$div = $dom->getElementsByTagName('div')[0];
$div_style = $div->getAttribute('class');
$final_data = explode(" ",$div_style);
echo $final_data[1];
?>
我有一个类似的项目,如果你想解析整个HTML站点,应该是这样做的
$dom = new DOMDocument();
$dom->loadHTML($html); // The HTML Source of the website
foreach ($dom->getElementsByTagName('div') as $node){
if($node->getAttribute("class") == "rating-static"){
$array = explode(" ", $node->getAttribute("class"));
$ratingArray = explode("-", $array[1]); // $array[1] is rating-10
//$ratingArray[1] would be 10
// do whatever you like with the information
}
}
可能您必须将部分更改为strpos
检查,我还没有测试这个脚本,但我认为getAttribute(“class”)
返回所有类。这就是if语句
if(strpos($node->getAttribute("class"), "rating-static") !== false)
我有一个类似的项目,如果你想解析整个HTML站点,这应该是一种方法
$dom = new DOMDocument();
$dom->loadHTML($html); // The HTML Source of the website
foreach ($dom->getElementsByTagName('div') as $node){
if($node->getAttribute("class") == "rating-static"){
$array = explode(" ", $node->getAttribute("class"));
$ratingArray = explode("-", $array[1]); // $array[1] is rating-10
//$ratingArray[1] would be 10
// do whatever you like with the information
}
}
可能您必须将部分更改为strpos
检查,我还没有测试这个脚本,但我认为getAttribute(“class”)
返回所有类。这就是if语句
if(strpos($node->getAttribute("class"), "rating-static") !== false)
仅供参考,请尝试使用,以满足将来的解析需求。它只是PHPDOM解析器的包装器,工作得非常好 仅供参考,我将尝试使用,以满足将来的解析需求。它只是PHPDOM解析器的包装器,工作得非常好 其实我什么都没试过,因为我不知道。我真的卡住了。例如,我可以通过“rating static”类获取该元素,但是我如何才能计算出什么是rating?我完全糊涂了@你有什么建议吗?我会立即尝试。@PottaG尝试下面的代码,它会给你预期的结果output@PottaG我写了一个答案,看一看。我没有测试它,但它应该可以工作,给你基本的想法。事实上,我什么都没有尝试,因为我不知道。我真的卡住了。例如,我可以通过“rating static”类获取该元素,但是我如何才能计算出什么是rating?我完全糊涂了@你有什么建议吗?我会立即尝试。@PottaG尝试下面的代码,它会给你预期的结果output@PottaG我写了一个答案,看一看。我没有测试它,但它应该可以工作并给你基本的想法谢谢你,但是Keval的答案是第一个,我用了这个getAttribute(“类”)谢谢你们。谢谢,但是Keval的答案是第一个,我用了这个getAttribute(“类”)谢谢你们。