2014-09-24 3 views
0

Это мой HTML часть кода:Читайте следующий тег HTML с помощью PHP

<ul> 
    <li> something,,,,... </li> 
    <li> something,,,,... </li> 
    <li> something,,,,... </li> 
    <li> something,,,,... </li> 
    <li> 
     <h5>Price</h5> 
     <span>100$</span> 
    </li> 
</ul> 

В моем PHP Я использую php-simple-dom для поиска меток. Так что PHP часть выглядит следующим образом:

foreach($html->find("li") as $li) 
    { 

     if(strpos($li->plaintext,"<h5>Price</h5>") !== false) 
     { 
      var_dump($li->plaintext); // result: string("<h5>Price</h5><span>100$</span>") 
     } 
    } 

У меня есть некоторые другие идеи:

foreach($html->find("h5") as $h5) 
    { 

     if(strpos($h5->plaintext,"Price") !== false) 
     { 
      // finding some way to read next tag 
     } 
    } 

Что мне нужно?

Мне нужно получить значение <span>. Это пример, в реальном коде есть больше тегов и нескольких интервалов в одном <li>. Но дело в том, что следующий тег содержит нужную информацию.

+0

Где находится html? Если у вас есть доступ к источнику, нет смысла разбирать его в php – andrew

+0

@andrew Я просматриваю некоторые веб-страницы и получаю информацию с этой страницы. У меня есть {$ html = file_get_html ($ website_url);} –

+0

ok Я не пробовал php-simple-dom. prob 'var_dump ($ h5-> find (" span "));' и посмотреть, как это получилось – andrew

ответ

1

Я не очень уверен, сколько меток может быть в одном <li>, но я верю <span>, который вы ищете всегда после <h5>. Вы можете использовать метод $e->next_sibling() следующим образом:

foreach ($html->find('li h5') as $h5) { 
    $price = $h5->next_sibling(); 
    echo $price->plaintext; 
} 
0

Итак, вы хотите, чтобы получить значение определенного тега, вы могли бы найти DOMDocument::getElementsByTagName полезным.

Возвращаемые значения

новый DOMNodeList объект, содержащий все соответствующие элементы.

Вот как вы бы использовать:

$html = <<< HTML 
<ul> 
    <li> something,,,,... </li> 
    <li> something,,,,... </li> 
    <li> something,,,,... </li> 
    <li> something,,,,... </li> 
    <li> 
     <h5>Price</h5> 
     <span>100$</span> 
    </li> 
</ul> 
HTML; 

$dom = new DOMDocument; 
$dom->loadXML($html); 
$prices = $dom->getElementsByTagName('span'); 
foreach ($prices as $price) { 
    echo $price->nodeValue, PHP_EOL; 
} 

Приведенный выше пример выведет: 100$

Идите вперед и попробовать его с несколькими ценами. Он работает как исключенный.

Вы также можете найти DOM documentation полезный.

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