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(“类”)谢谢你们。