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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Xpath, занесение в массив

Сообщения:  [1-5] 

 
 автор: confirm   (20.07.2013 в 07:31)   письмо автору
 
   для: OLi   (20.07.2013 в 01:45)
 

А в каком ухе у меня сейчас звенит?
Ваш вопрос ровно такой же. Получить в коллекции элементов или обратиться к одному единственному?
Проверить значение атрибута элемента - getAttribute(name), получить элемент по id - getElementById и читайте примечание. И это потому, что данная объектная модель основана на XML парсере, а HTML, это хоть и близко, но не совсем это.

В сети есть готовые классы позволяющие комфортно работать с html документом на основе объектной модели, найдите и работайте, если вам трудно разобраться с тем, что есть в штатном.

  Ответить  
 
 автор: OLi   (20.07.2013 в 01:45)   письмо автору
 
   для: OLi   (19.07.2013 в 23:09)
 

а если я хочу получить tr таблицы с id="bob"?

  Ответить  
 
 автор: OLi   (19.07.2013 в 23:09)   письмо автору
 
   для: confirm   (19.07.2013 в 07:23)
 

Большое спасибо и уважение!

  Ответить  
 
 автор: confirm   (19.07.2013 в 07:23)   письмо автору
 
   для: OLi   (18.07.2013 в 21:40)
 

<?
$doc 
= new DOMDocument(); 
$doc->loadHTML('<div class="pc-data-cab_table_block_container"  ...  </div>');
$a = array();
$doc $doc->getElementsByTagName('tr');
for(
$i=1$k=$doc->length$i<$k$i++) {
    
$e $doc->item($i)->getElementsByTagName('td');
    
$a[] = array('number'=>$e->item(0)->nodeValue'volume'=>$e->item(1)->nodeValue'code'=>$e->item(2)->nodeValue);
}
print_r($a);

  Ответить  
 
 автор: OLi   (18.07.2013 в 21:40)   письмо автору
 
 


Хочу получить из каждой <tr> 3 ячейки <td>
Первую ячейку с индексом 0, вторую с 1, третью с 2
И занести все это в массив, так чтоб в $result[0] были все значения ячеек с индексом 0 - всех tr строк и тд
<?
$lines 
$xpath->query("//table[@id='cab_table'] //tr");
            
$result = array();
           
                foreach(
$lines as $line) {

                    for(
$j=0$j<=3$j++) {

                     
$tds_{$j} = $xpath->query('//td['.$j.']'$line);
                     
$tds_{$j} = $xpath->query('//td['.$j.']'$line);
                     
$tds_{$j} = $xpath->query('//td['.$j.']'$line);

                     
$count $tds_{$j}->length;

                        for(
$i=0$i<$count$i++){
                            
                            
$result['number'][] = $tds_{$j}->item($i)->nodeValue;
                            
$result['volume'][] = $tds_{$j}->item($i)->nodeValue;
                            
$result['code'][] = $tds_{$j}->item($i)->nodeValue;
                            
                        }

                    }
            
?>                }



HTML такой:

<div class="pc-data-cab_table_block_container" style="overflow:auto">
            <div id="cab_table_block" style="width:100%;overflow:auto">
                <table id="cab_table" cellpadding="0px" cellspacing="0px" style="width:100%;overflow:auto">
                    <tr id="cab_table_tr_top">
                        <th id="cab_table_left">Номер СЃС‡РµС‚Р°</th>
                        <th>Объем</th>
                        <th id="cab_table_right">РЎСѓРјРјР° РєРѕРјРјРёСЃСЃРёРё</th>
                    </tr>
                                                                                <tr class="cab_table_tr2">
                            <td class="cab_table_left1">510169</td>
                            <td style='width:130px'>0.04</td>
                            <td class="cab_table_right1">2.07</td>
                         </tr>
                                                                                    <tr class="cab_table_tr1">
                            <td class="cab_table_left1">1193683</td>
                            <td style='width:130px'>0.23</td>
                            <td class="cab_table_right1">0.00</td>
                         </tr>
                                                                                    <tr class="cab_table_tr2">
                            <td class="cab_table_left1">2159860</td>
                            <td style='width:130px'>1.06</td>
                            <td class="cab_table_right1">51.54</td>
                         </tr>
                                                                                    <tr class="cab_table_tr1">
                            <td class="cab_table_left1">8070080</td>
                            <td style='width:130px'>1.76</td>
                            <td class="cab_table_right1">147.80</td>
                         </tr>
                                                                                    <tr class="cab_table_tr2">
                            <td class="cab_table_left1">8079297</td>
                            <td style='width:130px'>19.25</td>
                            <td class="cab_table_right1">884.85</td>
                         </tr>
                                                                            </table>
            </div>
        </div>


Но выходит не то что надо

  Ответить  

Сообщения:  [1-5] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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