Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Parsiranje tabela

[es] :: PHP :: Parsiranje tabela

Strane: 1 2

[ Pregleda: 3503 | Odgovora: 23 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: Parsiranje tabela24.09.2009. u 10:30 - pre 177 meseci
A čekaj, šta sad recimo fali tom rezultatu kojeg dobijaš sa tim pattern-om kojeg je predložio Mihailo? Ja sad opet ne znam šta sve tačno hoćeš da postigneš...

Citat:
vatri: P.S. kako da smanjim ovaj [ code ] tag da mi ne siri preko dimenzija sajta?

Mislim da ta opcija nije moguća.
 
Odgovor na temu

vatri
Banja Luka, RS

Član broj: 68697
Poruke: 1006
*.dial-up.dsl.siol.net.



+18 Profil

icon Re: Parsiranje tabela24.09.2009. u 11:01 - pre 177 meseci
Vidis li koja je vrijednost $matches[1][0] u mom prethodnom postu?
Tu se nalazi (izmedju ostalog) i "th" tagovi za koje smo rekli da ne smije biti pa me zanima zasto?
Ako ne bude islo da to odradim u paternu, uradicu strpos() ili jos jedan preg_match() svakog clana niza i provjeriti ima li th-ova. Ako ima, izbacim ga iz array-a i rjesen problem.

U svakom slucaju hvala vam obojici puno na trudu, bez vas ko zna kad bi ovo rjesio

I jos jedna vazna stvar koju sam dodao: nedostaje modifikator "s", jer mi onako ignorira celije u kojima ima \n (nova linija)...
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: Parsiranje tabela24.09.2009. u 11:44 - pre 177 meseci
Aha, al' evo onda uzmi u obzir i ovu varijantu:
Code:

$tekst = '</tr><tr> <td> <table class="tabVL"> <tr><th rowspan="2">Naziv opasne tvari</th><th colspan="2">GVI</th><th colspan="2">KGVI</th><th rowspan="2">BGV</th> </tr> <tr><th>ppm</th><th>mg/m<sup>3</sup></th><th>ppm</th><th>mg/m<sup>3</sup></th> </tr><tr><td>Naftni plinovi, ukapljeni (ako ne sadrži >od 0,1 % 1,3-Butadiena); #naftni plin; #[[Složeni sastav ugljikovodika proizvedenih destilacijom nafte.Sastoji se od ugljikovodika s brojem ugljikovih atoma pretežito u području C3 do C7 i vrijući u području približno -40 Â°C do 80 Â°C (-40 Â°F do 176 Â°F).]]</td><td align="center">1000</td><td align="center">1750</td><td align="center">1250</td><td align="center">2180</td><td align="left" style="width:30%"></td> </tr> <tr><td colspan="6"> GVI â€“ Granične vrijednosti izloženosti  KGVI â€“ Kratkotrajne granične vrijednosti izloženosti  BGV â€“ bioloÅ¡ke granične vrijednosti</td> </tr></table><table class="vsebTockeVL"><tr> <th>';

$pattern = '/<td[^>]*>(.*)<\/td>/Uis';

preg_match_all($pattern, $tekst, $matches);

function ukloniTagove(&$value)
{
    $value = strip_tags($value);
}

array_walk($matches[1], 'ukloniTagove');

echo '<pre>'; print_r($matches[1]); echo '</pre>';

I evo šta dobijam kao rezultat u $matches[1]:
Code:

Array
(
    [0] =>   Naziv opasne tvariGVIKGVIBGV  ppmmg/m3ppmmg/m3 Naftni plinovi, ukapljeni (ako ne sadrži >od 0,1 % 1,3-Butadiena); #naftni plin; #[[Složeni sastav ugljikovodika proizvedenih destilacijom nafte.Sastoji se od ugljikovodika s brojem ugljikovih atoma pretežito u području C3 do C7 i vrijući u području približno -40 Â°C do 80 Â°C (-40 Â°F do 176 Â°F).]]
    [1] => 1000
    [2] => 1750
    [3] => 1250
    [4] => 2180
    [5] => 
    [6] =>  GVI â€“ Granične vrijednosti izloženosti  KGVI â€“ Kratkotrajne granične vrijednosti izloženosti  BGV â€“ bioloÅ¡ke granične vrijednosti
)

Kao što vidiš, nema tag-ova, već samo čist tekst. Al' za to sam ipak morao da upotrebim strip_tags(), a ne regularne izraze.
 
Odgovor na temu

vatri
Banja Luka, RS

Član broj: 68697
Poruke: 1006
*.dial-up.dsl.siol.net.



+18 Profil

icon Re: Parsiranje tabela24.09.2009. u 12:48 - pre 177 meseci
da time si dobio i tekst izmedju <th> sto je visak :) U ovom konkretnom slucaju: "Naziv opasne tvariGVIKGVIBGV ppmmg/m3ppmmg/m3"

evo ukratno sta je moj cilj:

dobiti u niz sve sto se nalazi izmedju <td> i </td> pod uslovom da se tu izmedju ne nalaze tagovi za definisanje tabela/elemenata tabela (table, tr, td, th, tbody), NAPOMENA: Izmedju se smije nalaziti prazno polje, npr. ovako <td></td>
 
Odgovor na temu

[es] :: PHP :: Parsiranje tabela

Strane: 1 2

[ Pregleda: 3503 | Odgovora: 23 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.