gpt4 book ai didi

php - 从特定 id 名称开始的 DOM 中获取 div 数据

转载 作者:行者123 更新时间:2023-11-28 03:12:00 25 4
gpt4 key购买 nike

我正在尝试获取 html div 数据,其中 id 以特定名称或字符串开头。

例如,假设我有这个 html 数据:-

<html>
<div id="post_message_1">
somecontent1
</div>
<div id="post_message_2">
somecontent2
</div>
<div id="post_message_3">
somecontent3
</div>
</html>

为此,我尝试了 curl。

        <?php
function file_get_contents_curl($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}


$html = file_get_contents_curl("myUrl");
$fh = fopen("test.html", 'w'); // we create the file, notice the 'w'. This is to be able to write to the file once.
//writing response in newly created file
fwrite($fh, $html); // here we write the data to the file.
fclose($fh);
?>

如果我用

  $select=  $doc->getElementById("post_message_");

然后它没有返回数据,因为它在 DOM 中搜索这个 id,但是在 html 中 div id 只从这个字符串开始。它可能是 post_message_1 或 post_message_2。

最佳答案

我会将 file_get_contents_curl 的输出变成 SimpleXmlElement对象,我会使用 xpath 的功能之一

例如,您可以这样做:

$html = <<<HTML
<html>
<div id="post_message_1">
somecontent1
</div>
<div id="post_message_2">
somecontent2
</div>
<div id="post_message_3">
somecontent3
</div>
</html>
HTML;

$dom = new SimpleXMLElement($html);

var_dump($dom->xpath('//div[starts-with(@id, "post_message_")]'));

更新

在你的情况下你应该做这样的事情:

$doc = new DOMDocument();
$doc->loadHTML(file_get_contents_curl($url));

$sxml = simplexml_import_dom($doc);

var_dump($sxml->xpath('//div[starts-with(@id, "post_message_")]'));

关于php - 从特定 id 名称开始的 DOM 中获取 div 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30138030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com