2016-12-11 5 views
0

"thead/tr/td"、tbody/tr/td、tbody/tr/td/spanおよびtbody/tdの内容を取得するテーブルの正規表現が必要です。 tr/td/a。しかし、私が試してみましたではない画像テーブルのxpathでの正規表現

<table> 
    <thead> 
     <tr> 
      <th>Title1</th><th>Title2</th> 
     </tr> 
    </thead> 
    <thead> 
     <tr> 
      <td>Date1</td> 
      <td><span>Date 2</span></td> 
     </tr> 
     <tr> 
      <td><a href="#">Date3</a></td> 
      <td><img src="image.png"></td> 
     </tr> 
    </thead> 
</table> 

:その唯一のコンテンツimg要素である、または空であるもの以外のすべてのth|tdの要素を選択するには

$selector = $xpath->query('//table')->item(0); 

$query1 = '/*[self::tbody or self::thead]/tr/[self::th or self::td][not(descendant::img)]/[self::* or self::a or self::span]'; 

$resultado1 = $xpath->query($query1,$selector); 
+1

なぜ正規表現が必要なのですか?私は正規表現がこれで果たす役割を見ることができません。 –

答えて

0

は、

//*[self::td|self::th][node()[not(self::img)]] 
を試してみてください

これがあなたの要件ではない場合は、要件をより明確に説明する必要があります。例えば。 tda|spanが含まれていて、それ自身がimgを含む場合、またはtdに兄弟としてa|spanimgの両方が含まれている場合はどうしますか?