gpt4 book ai didi

PHP DomDocument - getElementByID(部分匹配)如何?

转载 作者:可可西里 更新时间:2023-11-01 01:03:47 25 4
gpt4 key购买 nike

有没有一种方法可以获取所有具有部分匹配的 id 的元素。例如,如果我想抓取网页上所有 id 属性以 msg_ 开头的 HTML 元素但在那之后可能是任何东西。

这是我到目前为止所做的:

$doc = new DomDocument;

// We need to validate our document before refering to the id
$doc->validateOnParse = true;
$doc->loadHtml(file_get_contents('{URL IS HERE}'));
foreach($doc->getElementById('msg_') as $element) {
foreach($element->getElementsByTagName('a') as $link)
{
echo $link->nodeValue . "\n";
}
}

但我需要弄清楚如何用这个位进行部分 ID 匹配:$doc->getElementById('msg_')或者如果有其他方法可以做到这一点...??

基本上,我需要获取 ID 以 msg_ 开头的元素的子元素的所有“a”标签从技术上讲,永远只有 1 a标签,但我不知道如何只捕获第一个 child ,这就是为什么我也在这个上使用 foreach。

DomDocument PHP 类可以做到这一点吗?

这是我现在使用的代码,它也不起作用:

$str = '';
$filename = 'http://dream-portal.net/index.php/board,65.0.html';
@set_time_limit(0);

$fp = fopen($filename, 'rb');
while (!feof($fp))
{
$str .= fgets($fp, 16384);
}
fclose($fp);

$doc = new DOMDocument();
$doc->loadXML($str);

$selector = new DOMXPath($doc);

$elements = $selector->query('//row[starts-with(@id, "msg_")]');

foreach ($elements as $node) {
var_dump($node->nodeValue) . PHP_EOL;
}

HTML如下(在span标签中):

<td class="subject windowbg2">
<div>
<span id="msg_6555">
<a href="http://dream-portal.net/index.php?topic=834.0">Poll 1.0</a>
</span>
<p>
Started by
<a href="http://dream-portal.net/index.php?action=profile;u=1" title="View the profile of SoLoGHoST">SoLoGHoST</a>
<small id="pages6555">
«
<a class="navPages" href="http://dream-portal.net/index.php?topic=834.0">1</a>
<a class="navPages" href="http://dream-portal.net/index.php?topic=834.15">2</a>
»
</small>

with 963 Views

</p>
</div>
</td>

这是<span id="msg_部分,其中有很多(HTML 页面上至少有 15 个)。

最佳答案

使用这个:

$str = file_get_contents('http://dream-portal.net/index.php/board,65.0.html');

$doc = new DOMDocument();
@$doc->loadHTML($str);

$selector = new DOMXPath($doc);

foreach ($selector->query('//*[starts-with(@id, "msg_")]') as $node) {
var_dump($node->nodeValue) . PHP_EOL;
}

给你:

string(8) "Poll 1.0"
string(12) "Shoutbox 2.2"
string(24) "Polaroid Attachments 1.6"
string(24) "Featured News Slider 1.3"
string(17) "Image Resizer 1.0"
string(8) "Blog 2.2"
string(13) "RSS Feeds 1.0"
string(19) "Adspace Manager 1.2"
string(21) "Facebook Like Box 1.0"
string(15) "Price Table 1.0"
string(13) "SMF Links 1.0"
string(19) "Download System 1.2"
string(16) "[*]Site News 1.0"
string(12) "Calendar 1.3"
string(16) "Page Peel Ad 1.1"
string(20) "Sexy Bookmarks 1.0.1"
string(15) "Forum Staff 1.2"
string(21) "Facebook Comments 1.0"
string(15) "Attachments 1.4"
string(25) "YouTube Channels 0.9 Beta"

关于PHP DomDocument - getElementByID(部分匹配)如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16247943/

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