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