PHP:file_get_contents 来自使用 div 内的正则表达式 h2 标记的页面
PHP: file_get_contents from a page using regex h2 tag that is inside a div
当用户输入下面的 id 时,这可以很好地从 div 标签中存在的某个网页中获取文本:
function get_text($id) {
$result = file_get_contents('www.site.net/.$id.'');
$regex = '/<div class="x">([^<]*)<\/div>/';
if (preg_match($regex, $result, $matches) && !empty($matches[1])) {
return $matches[1];
} else {
return 'N/A';
}
}
现在文本更难获取,因为它位于此处:
<div class="X2">
<h2 style="font-family: 'Pacifico', cursive;">TEXT</h2>
</div>
我尝试了 div 和 h2,但 returns 我什么都没有,请帮忙!谢谢。
使用 PHP 的 DOMDocument
:
很容易解决这个问题
$html = <<<'EOT'
<div class="X2">
<h2 style="font-family: 'Pacifico', cursive;">TEXT</h2>
</div>
EOT;
$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
$div = $xpath->query('//div[contains(@class, "X2")]')->item(0);
echo $div->textContent;
输出:
TEXT
为了适应您的功能环境,这应该可行:
function get_text($id) {
$html = file_get_contents("www.site.net/$id");
$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
$div = $xpath->query('//div[contains(@class, "X2")]');
if (count($div)) {
return $div->item(0)->textContent;
}
else {
return 'N/A';
}
}
当用户输入下面的 id 时,这可以很好地从 div 标签中存在的某个网页中获取文本:
function get_text($id) {
$result = file_get_contents('www.site.net/.$id.'');
$regex = '/<div class="x">([^<]*)<\/div>/';
if (preg_match($regex, $result, $matches) && !empty($matches[1])) {
return $matches[1];
} else {
return 'N/A';
}
}
现在文本更难获取,因为它位于此处:
<div class="X2">
<h2 style="font-family: 'Pacifico', cursive;">TEXT</h2>
</div>
我尝试了 div 和 h2,但 returns 我什么都没有,请帮忙!谢谢。
使用 PHP 的 DOMDocument
:
$html = <<<'EOT'
<div class="X2">
<h2 style="font-family: 'Pacifico', cursive;">TEXT</h2>
</div>
EOT;
$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
$div = $xpath->query('//div[contains(@class, "X2")]')->item(0);
echo $div->textContent;
输出:
TEXT
为了适应您的功能环境,这应该可行:
function get_text($id) {
$html = file_get_contents("www.site.net/$id");
$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
$div = $xpath->query('//div[contains(@class, "X2")]');
if (count($div)) {
return $div->item(0)->textContent;
}
else {
return 'N/A';
}
}