gpt4 book ai didi

php - 如何使用 XPath 获取这些值

转载 作者:搜寻专家 更新时间:2023-10-31 22:09:06 25 4
gpt4 key购买 nike

HTML

<table id='dg' border='0'  class="Table">
<tr>
<td class='text'>id.</td>
<td class='text'>file</td>
<td class='text'>alt</td>
</tr>
<tr>
<td class='text'><input name='somename[]' type='hidden' value='1234'>
1</td>
<td class='text'><a href='#' onClick="javascript:openPopWindow('../../somefile.jpg');" ><img src='cms_thumb.php?imgsrc=somefile2.jpg' border='0' ></a></td>
<td class='text'><input type='text' name='title[]' value='Value 1'></td>
</tr>
<tr>
<td class='text'><input name='somename[]2' type='hidden' value='2345'>
2</td>
<td class='text'><a href='#' onClick="javascript:openPopWindow('../../somefile2.jpg');" ><img src='thumb.php?imgsrc=somefile2.jpg' border='0' ></a></td>
<td class='text'><input type='text' name='title[]' value='Value 2'></td>
</tr>
</table>

目标

需要获取 img src 文件名并获取 name=title[] 的输入字段的值

到目前为止我有什么

$dom = new DOMDocument;
$dom->loadHTML($html);
$xpath = new DOMXpath($dom);

foreach ($dom->getElementsByTagName('tr') as $node) {
$img = $xpath->query('//img')->item(0);
$img = str_replace("\'","",$img->getAttribute('src'));
$img = str_replace("cms_thumb.php?imgsrc=","",$img);
echo $img.'<br>';
}

$img 只包含第一张图片,不包含其他图片

最佳答案

使用 DOMXPath::query() 的上下文参数连同相关查询并检查 img 和 input 元素是否存在(在您的第一个表行中不是这种情况):

$dom = new DOMDocument;
$dom->loadHTML($html);
$xpath = new DOMXpath($dom);

foreach ($dom->getElementsByTagName('tr') as $node) {
$img = $xpath->query('.//img', $node)->item(0);
$input = $xpath->query('.//input[@name="title[]"]', $node)->item(0);
if ($img && $input) {
echo $img->getAttribute('src'), ' - ';
echo $input->getAttribute('value'), '<br>';
}
}

这将搜索第一个 <img><input name="title[]">每个表行中任意位置的元素。如果表结构总是如上所示,您可以使用更明确的 XPath 优化脚本:

$dom = new DOMDocument;
$dom->loadHTML($html);
$xpath = new DOMXpath($dom);

$table = $dom->getElementById('dg');
$images = $xpath->query('tr/td/a/img', $table);
$inputs = $xpath->query('tr/td/input[@name="title[]"]', $table);

要获取属性,遍历 $images$inputs并行,例如与 MultipleIterator :

$iterator = new MultipleIterator();
$iterator->attachIterator(new IteratorIterator($images));
$iterator->attachIterator(new IteratorIterator($inputs));
foreach ($iterator as $items) {
$src = $items[0]->getAttribute('src');
$value = $items[1]->getAttribute('value');
echo $src, ' - ', $value, '<br>';
}

关于php - 如何使用 XPath 获取这些值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14677722/

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