2

cURL 操作の一環として、いくつかの解析を行う必要があります。必要なデータは にあり../table/tr/tdtd複数のセルには多くの文字列が含まれており、そのうちの 1 つは ですが<b>34 PT</b>、数字はランダムであり、単純に「ワイルドカード」などを実行する方法がわかりません。

私が見つけた提案:

/tr[contains(@td, 'PT')]" );  

結果を返しません。また、次のことも行いません。

/tr/td[contains( @b, 'PT' ) ]

最後にあらゆる種類の検索を削除し、期待どおりにすべてのセルを返すので、データがそこにあることがわかります。PT を含む表のセルには、<a href>知っておく必要がある があります。

html 全体の例を次に示します。

<table>
<tr>
<td>
<tr>
<td width="120" valign="top" align="center">
<a href="submit.phtml?PT_id=86343434&xcn=b22c57866bfc2bac89b09527b05b7760&location_id=0">
<img height="80" width="80" border="1" alt="" src=".gif">
</a>
<b>3423 PT</b>
<td>
<td>
<tr>
<td> ...and so on

xpath クエリは次のように使用されました。

@$dom = new DOMDocument();
    @$dom->loadHTML( $rawPage );
    @$xpath = new DOMXPath( $dom );
    @$queryResult = $xpath->query( " //html/body/div[3]/div[3]/table/tr/td[2]/table[2]/tr/td/div/div/table/tr[2]/td/table/tr/td[contains( b, 'PT' ) ]" );
4

1 に答える 1

1

シンボルを削除して@、属性ではなく要素の値を検査するようにします

すなわち/tr/td[contains( b, 'PT' ) ]

于 2012-07-25T03:57:24.640 に答える