2015-03-16 3 views
0

Вот мой XML:XML Xpath с помощью PHP

<div class="main"> 
    <div class="workshoplist-main"> 
     <div class="toggler pointer"> 
      <i class="icon-chevron-down"></i> 
      <span id="rpt_0_lblSectionHeader_0">Wednesday, March 18, 2015 (10:00 AM - 11:00 AM)</span> 
      <p>Description of March info</p> 
     </div> 
    </div> 
    <div class="workshoplist-main"> 
     <div class="toggler pointer"> 
      <i class="icon-chevron-down"></i> 
      <span id="rpt_0_lblSectionHeader_1">Thursday, April 16, 2015 (10:00 AM - 11:00 AM)</span> 
      <p>Description of April info</p> 
     </div> 
    </div> 
    <div class="workshoplist-main"> 
     <div class="toggler pointer"> 
      <i class="icon-chevron-down"></i> 
      <span id="rpt_0_lblSectionHeader_2">Friday, March 19, 2015 (10:00 AM - 11:00 AM)</span> 
      <p>Description of March info</p> 
     </div> 
    </div> 
</div> 

Я хочу, чтобы искать слова марта в с размахом идентификатором, который содержит lblSectionHeader.

Так возвращаемое значение я хотел бы это:

Wednesday, March 18, 2015 (10:00 AM - 11:00 AM) 
Friday, March 19, 2015 (10:00 AM - 11:00 AM) 

Мой код:

xpath("//div[contains(@class,'workshoplist-main') and //span[contains(@id,'lblSectionHeader')][text()='March']]"); 

Я не подвожу никаких результатов. Если бы кто-нибудь мог помочь, это было бы здорово.

+0

Это не XML-файл. – Daan

ответ

1

Следующий запрос работает:

$html = <<<'EOF' 
    ... Your HTML comes here ... 
EOF; 

$doc = new DOMDocument(); 
$doc->loadHTML($html); 

$selector = new DOMXPath($doc); 
$query = "//div[contains(@class,'workshoplist-main')]//span[contains(@id,'lblSectionHeader')][contains(text(), 'March')]"; 

foreach($selector->query($query) as $node) { 
    // do something with that node 
    var_dump($node); 
} 

Вы злоупотребили and ключевое слово в запросе. Если вы хотите выбрать теги <span> под тегом <div> (независимо от уровня гнездования), используйте //div//span, а не //div and //span

Смежные вопросы