2017-01-05 1 views
1

Je veux copier une table pour mon site, mais seulement avec quelques colonnes spécifiquesHTML simple Dom - analyser seulement quelques colonnes de la table originale

Voici mon code

<?php 

require('simple_html_dom.php'); 
$html = file_get_html('http://pomorskifutbol.pl/liga.php?id=970'); 

$table = $html->find('table', 0); 
$rowData = array(); 

foreach($table->find('tr') as $row) { 
    // initialize array to store the cell data from each row 
    $flight = array(); 
    foreach($row->find('td') as $cell) { 
     // push the cell's text to the array 
     $flight[] = $cell->plaintext; 
    } 
    $rowData[] = $flight; 
} 

echo '<table>'; 
foreach ($rowData as $row => $tr) { 
    echo '<tr>'; 
    foreach ($tr as $td) 
     echo '<td>' . $td .'</td>'; 
    echo '</tr>'; 
} 
echo '</table>'; 
?> 

whole table Et cette impression table entière, je veux obtenir seulement quelques colonnes, par exemple seulement "M.", "Drużyna", "M", "PKT" Comment extraire seulement ces colonnes de cette table?

Répondre

1

Vous pouvez modifier l'entrée:

foreach($row->find('td') as $cell) { 

à

foreach($row->find('td') as $columnNumber => $cell) { 

et faire une si avant le remplissage des vols tableau $, par exemple

//somewhere in code 
$columnNumbers = [ 0, 2, 3,4, 7]; 

// int the foreach loop 
if (in_array($columnNumber, $columnNumbers)) { 
$flight[] = $cell->plaintext; 
} 

PS. Powodzenia :)

+0

Fonctionne bien! Juste une question de plus - comment ignorer la première rangée de cette table? (Mecze bezpośrednie) PS. Dzięki :) – Dawid

+0

La première colonne a l'index 0 - donc les $ columnNumbers ne doivent pas avoir cet index – Lukas

+0

Cette donnée est dans la rangée 0, colonne 1. Les autres cellules de cette rangée sont vides, et j'ai besoin de la colonne numéro 1, mais pas ligne 0. Alors, comment je peux passer la ligne 0? – Dawid