Есть ли способ захватить все элементы с идентификатором, который частично совпадает. Например, если я хочу захватить все HTML-элементы на веб-странице с атрибутом id, который начинается с msg_
, но может быть чем-то после этого.PHP DomDocument - getElementByID (частичное совпадение) Как?
Вот что я так далеко:
$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";
}
}
Но мне нужно, чтобы выяснить, как сделать частичное совпадение с идентификатором с этим битом: $doc->getElementById('msg_')
или если есть какой-то другой способ сделать это ... ??
В принципе, мне нужно, чтобы захватить все «а» метки, которые являются потомками элемента с идентификатором, начиная с msg_
Технически всегда, только будет 1 a
тег, но я не знаю, как захватить только первый ребенок, поэтому я также использую foreach.
Возможно ли это с классом PHP DomDocument?
Вот код, я использую в настоящее время, который не работает либо:
$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_
часть, и есть куча этих (по крайней мере 15 на HTML-странице).
Не загружать HTML с loadXML(), используйте loadHTML() –
Спасибо, что, кажется, избавившись от ошибок, однако, все еще пусто ... –
Тогда я бы предложил опубликовать часть HTML. –