在我继续传播xpath和提取数据的过程中,我继续努力。我只需要表格单元格中包含两个值。我可以单独找到每个人,但在那里我无法访问另一个。我有像这样的细胞
<TR>
<TD width="120" align="center" valign="top">
<A href="http://www..yadayada.com"> <!--the href I need to extract-->
<IMG src="http://images.com/items/yada.gif" width="80" height="80" border="1"></A>
<BR>
<B>Random number PT</B><!--the text I need to extract-->
</TD>
我这样穿过:
@$dom = new DOMDocument();
@$dom->loadHTML( $rawPage );
@$xpath = new DOMXPath( $dom );
@$queryResult = $xpath->query( "..../tr/td[contains( b, 'PT' ) ]/b" );
进入href链接和类似,
@$queryResult = $xpath->query( "..../tr/td[contains( b, 'PT' ) ]/a" );
获取我需要的文字。然后我像这样提取
//for the text in b
foreach ( $queryResult as $result )
{
echo $result->textContent . " text content<br>";
}
和链接
//for the text in href
foreach ( $queryResult as $result )
{
echo $result->getAttribute( 'href' ) . " href<br>";
}
我不会在表中提取每个TD,这就是为什么我匹配 中具有PT的/td[contains( b, 'PT' ) ]
个。我已经阅读了关于工会并使用/td[contains( b, 'PT' ) ]/*[self::a or self::b
但我的每个错误Invalid argument supplied for foreach()
我已经尝试过使用nextSibling,而且当我回应它时它只是空白。那么,我怎样才能从表中得到这两个值呢?
答案 0 :(得分:1)
你可以尝试
//td[contains( b, 'PT' ) ]
和
//td[contains( b, 'PT' ) ]/a
两个查询应该有效,
使用现有代码
queryResult = $xpath->query( "//td[contains( b, 'PT' ) ]" );
foreach ( $queryResult as $result )
{
echo $result->textContent . " text content<br>";
}
$queryResult = $xpath->query( "//td[contains( b, 'PT' ) ]/a" );
foreach ( $queryResult as $result )
{
echo $result->getAttribute( 'href' ) . " href<br>";
}