Domanda

Sto usando ultima PHP. Voglio analizzare pagina HTML per ottenere i dati.

HTML:

<table class="margin15" style="margin-left: 0pt; margin-right: 0pt;" width="100%" align="left" border="0" cellpadding="0" cellspacing="0">
TRs, TDs, Data
</table>

<table class="margin15" style="margin-left: 0pt; margin-right: 0pt;" width="100%" align="left" border="0" cellpadding="0" cellspacing="0">
TRs, TDs, Data
</table>

<table class="margin15" style="margin-left: 0pt; margin-right: 0pt;" width="100%" align="left" border="0" cellpadding="0" cellspacing="0">
TRs, TDs, Data
</table>

<table class="margin15" style="margin-left: 0pt; margin-right: 0pt;" width="100%" align="left" border="0" cellpadding="0" cellspacing="0">
TRs, TDs, Data
</table>

Codice PHP:

<?php

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.test.com/mypage.html');  
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);


$pattern = '/<table class="margin15" style="margin-left: 0pt; margin-right: 0pt;" width="100%" align="left" border="1" cellpadding="0" cellspacing="0">[^~]</table>/';
preg_match_all($pattern, $result, $matches);
print_r($matches);

?>

Io non sono in grado di ottenere tutte le tabelle. Quando uso semplice $ pattern = '/ table /'; , mi dà risultato esatto. Come creare un modello per ottenere tutto il tavolo in uno luogo array?

È stato utile?

Soluzione

utilizzando

parsing del codice HTML regex è un dolore nel migliore dei casi come HTML non è regolare, vi suggerisco di utilizzare semplice HTML DOM .

Altri suggerimenti

Non si può analizzare [X ] HTML con regex , ma si può provare:

$pattern = '#<table(?:.*?)>(.*?)</table>#';

Questo non funziona se ci sono le tabelle nidificate.

Si prega di dare un'occhiata a questa risposta . Esso descrive l'utilizzo di un parser HTML in PHP, che è quello che vuole fare.

o semplicemente usare il DOM offerte classe PHP. Penso che possa fare lo stesso come semplice HTML DOM ma molto più veloce (non' fraintendetemi, mi piace molto semplice Html DOM, ma è lento per i file con poche decine di linee)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top