部分的に一致する ID を持つすべての要素を取得する方法はありますか。たとえば、Web ページ上のすべての HTML 要素を取得したい場合、id 属性は id 属性で始まりますが、msg_
その後は何でもかまいません。
これが私がこれまでに行ったことです:
$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 で始まる要素の子であるすべての「a」タグを取得する必要がありmsg_
ますa
これにも 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 個あります)。