PHP 提取 html 标签和内容
PHP extract html tag and contents
我有:
<html>
<head>
<title>My Page</title>
</head>
<body>
<p>paragraph 1</p>
<p>paragraph 2</p>
<p>paragraph 3</p>
<p>paragraph 4</p>
<ul>
<li>item # 1</li>
<li>item # 2</li>
<li>item # 3</li>
<li>item # 4</li>
</ul>
<a href="#">anchor 1</a>
<a href="#">anchor 2</a>
<a href="#">anchor 3</a>
<a href="#">anchor 4</a>
<div>div # 1</div>
<div>div # 2</div>
<div>div # 3</div>
<div>div # 4</div>
</body>
</html>
我希望能够提取指定的标签,比如 div 标签及其内容。
到目前为止我有
$file = file_get_contents('file.html');
$dom = new DOMDocument();
$dom->loadHTML( $file );
$xpath = new DOMXpath( $dom );
$paragraphs = $xpath->query("/html/body//p");
for( $i = 0; $i < $paragraphs->length; $i++ )
{
# echo the tag and it's contents
}
我尝试使用 nodeValue
或 textContent
,但它们只打印标签的内容,而不是标签加上它们的内容。
这是我第一次在 PHP 中使用 DOM 解析器。我知道有人反对使用正则表达式解析 HTML/XML,所以我使用 DOM 解析器。任何建议都会有所帮助。
这应该适用于 PHP 版本 5.3.6+。只需将节点传递给 DOMDocument::saveHTML 函数即可。
for( $i = 0; $i < $paragraphs->length; $i++ )
{
echo $dom->saveHTML($paragraph->item($i));
}
希望对您有所帮助!
我有:
<html>
<head>
<title>My Page</title>
</head>
<body>
<p>paragraph 1</p>
<p>paragraph 2</p>
<p>paragraph 3</p>
<p>paragraph 4</p>
<ul>
<li>item # 1</li>
<li>item # 2</li>
<li>item # 3</li>
<li>item # 4</li>
</ul>
<a href="#">anchor 1</a>
<a href="#">anchor 2</a>
<a href="#">anchor 3</a>
<a href="#">anchor 4</a>
<div>div # 1</div>
<div>div # 2</div>
<div>div # 3</div>
<div>div # 4</div>
</body>
</html>
我希望能够提取指定的标签,比如 div 标签及其内容。
到目前为止我有
$file = file_get_contents('file.html');
$dom = new DOMDocument();
$dom->loadHTML( $file );
$xpath = new DOMXpath( $dom );
$paragraphs = $xpath->query("/html/body//p");
for( $i = 0; $i < $paragraphs->length; $i++ )
{
# echo the tag and it's contents
}
我尝试使用 nodeValue
或 textContent
,但它们只打印标签的内容,而不是标签加上它们的内容。
这是我第一次在 PHP 中使用 DOM 解析器。我知道有人反对使用正则表达式解析 HTML/XML,所以我使用 DOM 解析器。任何建议都会有所帮助。
这应该适用于 PHP 版本 5.3.6+。只需将节点传递给 DOMDocument::saveHTML 函数即可。
for( $i = 0; $i < $paragraphs->length; $i++ )
{
echo $dom->saveHTML($paragraph->item($i));
}
希望对您有所帮助!