Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: domDocument, как получить нужные элементы
 
 автор: OLi   (16.07.2013 в 04:27)   письмо автору
 
 

Написал такой небольшой код:


<?
libxml_use_internal_errors
(true);
            
$dom = new domDocument('1.0''UTF-8');
            
$dom->strictErrorChecking=false;
            
$dom->recover true;
            @
$dom->loadHTML($data);
            
$xpath = new DomXPath($dom);
            
            
$elements $xpath->query("//table[@class='dataTable all_clients']//tr");
            
$result = array();
            
            if (!
is_null($elements)) {

                  
$str $xpath->query("//strong");
                  foreach (
$str as $value) {
                      
$result['title'][] = $value->nodeValue;
                  }
            }
?>


В $elements попадают все <tr>, далее хочу из каждой <tr> в цикле вытащить нужные <td>
а именно такие значения в них:

1) текстовое значение в <strong>Text</strong> занести в $result['title][]
2) значения вида 514597 занести в $result['number][]
3) значения вида 0.00 занести в $result['nmb][]
4) код USD/EUR занести в $result['symbl][]

Чтобы на выходе получился массив $result с соответствиями по стокам

Пример HTML кода:


<html>
<table class="dataTable all_clients" style="width:100%;" cellpadding="0" cellspacing="0" border="0">
      <tbody>
        <tr>
          <td width="15px"></td>
          <td width="25%">
            <strong>Комиссии за сутки</strong>
          </td>
          <td></td>
        </tr>
        <tr>
          <td colspan="5" style="height:5px" class="line"></td>
        </tr>
        <tr>
          <td></td>
          <td style="width:200px;">
            514596        
          </td>
          <td style="text-align:right;width:70px;" class="redData">
            0.00        
          </td>
          <td class="redData">
            USD        
          </td>
          <td></td>
        </tr>
        <tr>
          <td></td>
          <td style="width:200px;">
            514597        
          </td>
          <td style="text-align:right;width:70px;" class="redData">
            0.00        
          </td>
          <td class="redData">
            RUR        
          </td>
          <td></td>
        </tr>
        <tr>
          <td></td>
          <td style="width:200px;">
            514598        
          </td>
          <td style="text-align:right;width:70px;" class="redData">
            0.00        
          </td>
          <td class="redData">
            EUR        
          </td>
          <td></td>
        </tr>
      </tbody>
    </table>
</html>



Поделитесь предложениями..

  Ответить  
 
 автор: OLi   (16.07.2013 в 04:46)   письмо автору
 
   для: OLi   (16.07.2013 в 04:27)
 

Пытаюсь сделать как-то так:

<?

libxml_use_internal_errors
(true);
            
$dom = new domDocument('1.0''UTF-8');
            
$dom->strictErrorChecking=false;
            
$dom->recover true;
            @
$dom->loadHTML($data);
            
$xpath = new DomXPath($dom);
            
            
$elements $xpath->query("//table[@class='dataTable all_clients']//tr");
            
$result = array();
            
$title = array();
            
            if (!
is_null($elements)) {

                foreach (
$elements as $element) {
                    
                      
$titles $xpath->query('//strong'$element);       //Get titles
                      
$numbers $xpath->query('//td[1]'$element);       //Get number
                      
$numbers_flt $xpath->query('//td[2]'$element);   //Get number 0.00
                      
$symbols $xpath->query('//td[3]'$element);       //Get Symbol

                      
for( $i 0$i count($numbers); $i++) {
                              
                              
$result['numbers'][$i] = $numbers->nodeValue;
                              
$result['numbers_flt'][$i] = $numbers_flt->nodeValue;
                              
$result['symbols'][$i] = $symbols->nodeValue;
                              
                      }

                      foreach (
$titles as $value) {
                          
$title[] = $value->nodeValue;
                      }
                }
            }
          
            
var_dump($result);
?>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования