Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP简单HTML DOM-不使用css类从元素获取文本_Php_Simple Html Dom - Fatal编程技术网

PHP简单HTML DOM-不使用css类从元素获取文本

PHP简单HTML DOM-不使用css类从元素获取文本,php,simple-html-dom,Php,Simple Html Dom,仅当元素没有类时,如何获取元素的内容? 我正在使用PHP Simple HTMLDOM从外部页面获取内容 $html = file_get_html('someurl/page.html'); foreach($html->find('code') as $element) { echo $element->plaintext . '<br>'; } 我试过了 if(isset($e->class)) { echo $element-&g

仅当元素没有类时,如何获取元素的内容?
我正在使用PHP Simple HTMLDOM从外部页面获取内容

$html = file_get_html('someurl/page.html');

foreach($html->find('code') as $element) {
    echo $element->plaintext . '<br>';
}
我试过了

if(isset($e->class)) {
        echo $element->plaintext. '<br>';
    } 
此行返回元素仅当它不是
标记????Div和p工作正常,但不是代码

有线索吗? 谢谢

我从所有
标签获取内容。我不想要中的内容,我只想要
中的内容,不需要任何类。

您可以使用
[!attribute]
来匹配没有指定属性的元素。。。在您的情况下,您应该尝试
code[!class]

例如,下面是一个工作代码,它获取所有不具有
target
属性的锚:

// includes Simple HTML DOM Parser
include "simple_html_dom.php";

$text = '<div>
            <a href="#" >OK 1</a>
            <a href="#" target="_blank">Not needed</a>
            <a href="#" >OK 2</a>
            <a href="#" target="_blank">Not needed</a>
            <a href="#" >OK 3</a>
            <a href="#" target="_blank">Not needed</a>
            <a href="#" >OK 4</a>
        </div>';

//Create a DOM object
$html = new simple_html_dom();
// Load HTML from a string
$html->load($text);

// Get all anchors not having target as attribute
$anchors = $html->find('div a[!target]');

// loop and print nodes content
foreach( $anchors as $i => $anchor ) {

    echo "$i => ".$anchor->outertext."<br/>";
}

// Clear dom object
$html->clear(); 
unset($html);

编辑:

在检查了原始代码之后,这里有一种方法可以获得想要的部件。。。为了给你这个想法,你当然还可以改进它:

// includes Simple HTML DOM Parser
include "simple_html_dom.php";

$url = 'http://getuikit.com/docs/grid.html';

//Create a DOM object
$html = new simple_html_dom();
// Load HTML from a string
$html->load_file($url);

// Get all nodes with "tm-article-subtitle"...
$nodes = $html->find('.tm-article-subtitle');

// loop and print nodes content
foreach( $nodes as $i => $node ) {

    // Filter only those containing "Markup"
    if (stripos($node->plaintext, "Markup") !== false) {
        echo "<pre>$i => ";

        // The wanted code in pre can be 1 or 2 position far from "Markup"
        if(stripos($node->next_sibling()->tag, "pre") !== false)
            echo htmlentities($node->next_sibling()->outertext);

        elseif(stripos($node->next_sibling()->next_sibling()->tag, "pre") !== false)
            echo htmlentities($node->next_sibling()->next_sibling()->outertext);

        echo "</pre>";
    }

}

// Clear dom object
$html->clear(); 
unset($html);
14 =>

我从所有
标签获取内容。我不想要中的内容,我只想要
中的内容,不需要任何类。

您可以使用
[!attribute]
来匹配没有指定属性的元素。。。在您的情况下,您应该尝试
code[!class]

例如,下面是一个工作代码,它获取所有不具有
target
属性的锚:

// includes Simple HTML DOM Parser
include "simple_html_dom.php";

$text = '<div>
            <a href="#" >OK 1</a>
            <a href="#" target="_blank">Not needed</a>
            <a href="#" >OK 2</a>
            <a href="#" target="_blank">Not needed</a>
            <a href="#" >OK 3</a>
            <a href="#" target="_blank">Not needed</a>
            <a href="#" >OK 4</a>
        </div>';

//Create a DOM object
$html = new simple_html_dom();
// Load HTML from a string
$html->load($text);

// Get all anchors not having target as attribute
$anchors = $html->find('div a[!target]');

// loop and print nodes content
foreach( $anchors as $i => $anchor ) {

    echo "$i => ".$anchor->outertext."<br/>";
}

// Clear dom object
$html->clear(); 
unset($html);

编辑:

在检查了原始代码之后,这里有一种方法可以获得想要的部件。。。为了给你这个想法,你当然还可以改进它:

// includes Simple HTML DOM Parser
include "simple_html_dom.php";

$url = 'http://getuikit.com/docs/grid.html';

//Create a DOM object
$html = new simple_html_dom();
// Load HTML from a string
$html->load_file($url);

// Get all nodes with "tm-article-subtitle"...
$nodes = $html->find('.tm-article-subtitle');

// loop and print nodes content
foreach( $nodes as $i => $node ) {

    // Filter only those containing "Markup"
    if (stripos($node->plaintext, "Markup") !== false) {
        echo "<pre>$i => ";

        // The wanted code in pre can be 1 or 2 position far from "Markup"
        if(stripos($node->next_sibling()->tag, "pre") !== false)
            echo htmlentities($node->next_sibling()->outertext);

        elseif(stripos($node->next_sibling()->next_sibling()->tag, "pre") !== false)
            echo htmlentities($node->next_sibling()->next_sibling()->outertext);

        echo "</pre>";
    }

}

// Clear dom object
$html->clear(); 
unset($html);
14 =>

我从所有
标签获取内容。我不想要中的内容,我只想要
中的内容,不需要任何类。

您可以使用
[!attribute]
来匹配没有指定属性的元素。。。在您的情况下,您应该尝试
code[!class]

例如,下面是一个工作代码,它获取所有不具有
target
属性的锚:

// includes Simple HTML DOM Parser
include "simple_html_dom.php";

$text = '<div>
            <a href="#" >OK 1</a>
            <a href="#" target="_blank">Not needed</a>
            <a href="#" >OK 2</a>
            <a href="#" target="_blank">Not needed</a>
            <a href="#" >OK 3</a>
            <a href="#" target="_blank">Not needed</a>
            <a href="#" >OK 4</a>
        </div>';

//Create a DOM object
$html = new simple_html_dom();
// Load HTML from a string
$html->load($text);

// Get all anchors not having target as attribute
$anchors = $html->find('div a[!target]');

// loop and print nodes content
foreach( $anchors as $i => $anchor ) {

    echo "$i => ".$anchor->outertext."<br/>";
}

// Clear dom object
$html->clear(); 
unset($html);

编辑:

在检查了原始代码之后,这里有一种方法可以获得想要的部件。。。为了给你这个想法,你当然还可以改进它:

// includes Simple HTML DOM Parser
include "simple_html_dom.php";

$url = 'http://getuikit.com/docs/grid.html';

//Create a DOM object
$html = new simple_html_dom();
// Load HTML from a string
$html->load_file($url);

// Get all nodes with "tm-article-subtitle"...
$nodes = $html->find('.tm-article-subtitle');

// loop and print nodes content
foreach( $nodes as $i => $node ) {

    // Filter only those containing "Markup"
    if (stripos($node->plaintext, "Markup") !== false) {
        echo "<pre>$i => ";

        // The wanted code in pre can be 1 or 2 position far from "Markup"
        if(stripos($node->next_sibling()->tag, "pre") !== false)
            echo htmlentities($node->next_sibling()->outertext);

        elseif(stripos($node->next_sibling()->next_sibling()->tag, "pre") !== false)
            echo htmlentities($node->next_sibling()->next_sibling()->outertext);

        echo "</pre>";
    }

}

// Clear dom object
$html->clear(); 
unset($html);
14 =>

我从所有
标签获取内容。我不想要中的内容,我只想要
中的内容,不需要任何类。

您可以使用
[!attribute]
来匹配没有指定属性的元素。。。在您的情况下,您应该尝试
code[!class]

例如,下面是一个工作代码,它获取所有不具有
target
属性的锚:

// includes Simple HTML DOM Parser
include "simple_html_dom.php";

$text = '<div>
            <a href="#" >OK 1</a>
            <a href="#" target="_blank">Not needed</a>
            <a href="#" >OK 2</a>
            <a href="#" target="_blank">Not needed</a>
            <a href="#" >OK 3</a>
            <a href="#" target="_blank">Not needed</a>
            <a href="#" >OK 4</a>
        </div>';

//Create a DOM object
$html = new simple_html_dom();
// Load HTML from a string
$html->load($text);

// Get all anchors not having target as attribute
$anchors = $html->find('div a[!target]');

// loop and print nodes content
foreach( $anchors as $i => $anchor ) {

    echo "$i => ".$anchor->outertext."<br/>";
}

// Clear dom object
$html->clear(); 
unset($html);

编辑:

在检查了原始代码之后,这里有一种方法可以获得想要的部件。。。为了给你这个想法,你当然还可以改进它:

// includes Simple HTML DOM Parser
include "simple_html_dom.php";

$url = 'http://getuikit.com/docs/grid.html';

//Create a DOM object
$html = new simple_html_dom();
// Load HTML from a string
$html->load_file($url);

// Get all nodes with "tm-article-subtitle"...
$nodes = $html->find('.tm-article-subtitle');

// loop and print nodes content
foreach( $nodes as $i => $node ) {

    // Filter only those containing "Markup"
    if (stripos($node->plaintext, "Markup") !== false) {
        echo "<pre>$i => ";

        // The wanted code in pre can be 1 or 2 position far from "Markup"
        if(stripos($node->next_sibling()->tag, "pre") !== false)
            echo htmlentities($node->next_sibling()->outertext);

        elseif(stripos($node->next_sibling()->next_sibling()->tag, "pre") !== false)
            echo htmlentities($node->next_sibling()->next_sibling()->outertext);

        echo "</pre>";
    }

}

// Clear dom object
$html->clear(); 
unset($html);
14 =>

如果有用的话,我甚至知道不需要的类名。请使用$element而不是$e。谢谢,但仍然没有输出。奇怪的是,我可以从外部页面获得一些类的div,但是不能获得类的代码标签??你能发布一部分html输入代码来测试它吗?外部页面在这里,我甚至知道不需要的类名,如果有帮助的话。使用$element而不是$e。谢谢,但仍然没有输出。奇怪的是,我可以从外部页面获得一些类的div,但是不能获得类的代码标签??你能发布一部分html输入代码来测试它吗?外部页面在这里,我甚至知道不需要的类名,如果有帮助的话。使用$element而不是$e。谢谢,但仍然没有输出。奇怪的是,我可以从外部页面获得一些类的div,但是不能获得类的代码标签??你能发布一部分html输入代码来测试它吗?外部页面在这里,我甚至知道不需要的类名,如果有帮助的话。使用$element而不是$e。谢谢,但仍然没有输出。奇怪的是,我可以从外部页面用一些类获取div,但不能用类获取代码标签??你可以发布一部分html输入代码来测试它吗?外部页面在这里,不知何故我无法访问
类。即使是
$html->find('.codeClass')
也不起作用。它适用于div或p。这在小提琴中起作用,但如果内容是从外部页面加载的,则不起作用。那页肯定有什么东西。感谢您在上面给出的提示,没有
code
标记具有
class
属性,因此行为是正常的。。。我接受这个答案,这里还有其他问题。谢谢,问题是原始代码不包含任何使用JavaScript添加的
class=“xml”
ctrl+U
查看原始源代码)。。。即使不使用该类,也有一种方法可以获得想要的代码。。。我将很快更新我的答案…不知何故,我无法访问
类。即使是
$html->find('.codeClass')
也不起作用。它适用于div或p。这在小提琴中起作用,但如果内容是从外部页面加载的,则不起作用。那页肯定有什么东西。感谢您在上面给出的提示,没有
code
标记具有
class
属性,因此行为是正常的。。。我接受这个答案,这里还有其他问题。谢谢,问题是原始代码不包含任何使用JavaScript添加的
class=“xml”
ctrl+U
查看原始源代码)。。。即使不使用该类,也有一种方法可以获得想要的代码。。。我将很快更新我的答案…不知何故,我无法访问
类。即使是
$html->find('.codeClass')
也不起作用。它适用于div或p。这在小提琴中起作用,但如果内容是从外部页面加载的,则不起作用。那页肯定有什么东西。感谢您在上面给出的提示,没有
code
标记具有
class
属性,因此行为是正常的。。。我接受这个答案,这里还有其他问题。谢谢,问题是原始代码不包含任何
class=“xml”
wi