Paweł S.

Paweł S. Zaufanie to podstawa

Temat: pobieranie tekstu z pliku html - funkcja preg_match_all

Witam

probuje pobrac z pliku html wartości i potem je wyświetlić, jednak nie zwraca mi zadnych wartości.
chcę pobrać i wyświetlić to co jest pomiędzy znacznikami
start:<tr class="rozmiar">
koniec:<td class="kanaal">

Mój kod:
<?php
$testowy = file_get_contents('http://pl-sport.tv/tabela.html');

preg_match_all ('@<tr class=\"rozmiar\">(\d+)<td class=\"kanaal\">@si', $testowy, $matchesarray, PREG_SET_ORDER);

echo '<table width="579" border="0"> <tr class="qq"> <td width="92">Data</td> <td width="29">Godz</td> <td width="275">Nazwa Wadarzenia</td> <td width="103">Kategoria</td> <td width="58" class="kanaal">Kanał</td> </tr>';
echo $matchesarray[2] . "</td></tr>\n";
echo '</table>';

kawałek kodu z ktorego ma pobierać wartości:
<body>
<table width="579" border="0">
<tr class="qq">
<td width="92">Data</td>
<td width="29">Godz</td>
<td width="275">Nazwa Wadarzenia</td>
<td width="103">Kategoria</td>
<td width="58" class="kanaal">Kanał</td>
</tr>
<tr class="rozmiar">
<td>03/01/11 Poniedzialek</td>
<td>13:30</td>
<td class="sss">Turniej Czterech Skoczni - Innsbruck</td>
<td><img src="http://sports4u.pl/ikony/skoki.png" width="20" height="20" />Skoki Narciarskie</td>
<td class="kanaal"><a href="http://pl-sport.tv/" target="_top"><blink>Kanał - 1</blink></a></td>
</tr>
<tr class="rozmiar">
<td>03/01/11 Poniedzialek</td>
<td>20:55</td>
<td class="sss">Getafe CF - Real Madryt</td>
<td><img src="http://sports4u.pl/ikony/pilka_nozna.png" width="20" height="20" />Liga hiszpańska</td>
<td class="kanaal"><a href="http://pl-sport.tv/" target="_top"><blink>Kanał - 1</blink></a></td>
</tr>
<tr class="rozmiar">
<td height="14" bgcolor="#191919"> </td>
<td bgcolor="#191919"> </td>
<td bgcolor="#191919" class="sss"> </td>
<td bgcolor="#191919"> </td>
<td bgcolor="#191919" class="kanaal"> </td>
</tr>
...
i tak dalej..

proszę pomożcie napisać mi kod, bo już nie wiem jak...?Paweł Sikora edytował(a) ten post dnia 03.01.11 o godzinie 19:26

konto usunięte

Temat: pobieranie tekstu z pliku html - funkcja preg_match_all

Odpowiedź znajduje się tutaj:
http://www.goldenline.pl/forum/1430936/phppobieranie-t...

Lepiej użyć funkcji preg_match_all()
Paweł S.

Paweł S. Zaufanie to podstawa

Temat: pobieranie tekstu z pliku html - funkcja preg_match_all

przeczytaj dokładnie mój post.
Takiej funkcji używam.
Janusz Matyja

Janusz Matyja WebDeveloper

Temat: pobieranie tekstu z pliku html - funkcja preg_match_all

spróbuj:

|<tr class="rozmiar">(.*)<td class="kanaal">|
Paweł S.

Paweł S. Zaufanie to podstawa

Temat: pobieranie tekstu z pliku html - funkcja preg_match_all

Janusz Matyja:
spróbuj:

|<tr class="rozmiar">(.*)<td class="kanaal">|
rozumiem, ze jak warunek w funkcji, ale nie dziala.

konto usunięte

Temat: pobieranie tekstu z pliku html - funkcja preg_match_all

Spróbuj tak:
preg_match_all( '<tr class=\"rozmiar\">(.*?)<td class=\"kanaal\">@si', $html, $fragment );

A jak i to nie pomoże to zawsze przed regexp'em możesz pozbyć się nowych linii na przykład w taki sposób:
function replace_newline($string) {
return (string)str_replace(array("\r", "\r\n", "\n"), '', $string);
}
Paweł S.

Paweł S. Zaufanie to podstawa

Temat: pobieranie tekstu z pliku html - funkcja preg_match_all

to moze nie tak, jak wyswietlić tylko linie miedzy znacznikami ktore podałem powyżej?
Michał Sznurawa

Michał Sznurawa Scala Developer

Temat: pobieranie tekstu z pliku html - funkcja preg_match_all

Paweł Sikora:
to moze nie tak, jak wyswietlić tylko linie miedzy znacznikami ktore podałem powyżej?
Jak tak się z tym mocujesz i nie dajesz rady, to może takie brzydkie lamerskie rozwiązanie:] W pętli wyszukuj sobie pierwszego znacznika, potem patrzysz gdzie jest za nim najbliższy drugi znacznik i wycinasz odpowiedni fragment. I tak do momentu aż nie znajdziesz już więcej tego pierwszego. Wystarczy while, substr, strpos i pamięć o offset.Michał Sznurawa edytował(a) ten post dnia 03.01.11 o godzinie 21:07

konto usunięte

Temat: pobieranie tekstu z pliku html - funkcja preg_match_all

Paweł Sikora:
to moze nie tak, jak wyswietlić tylko linie miedzy znacznikami ktore podałem powyżej?

O wiele prościej można się dobrać do tej tabelki, wykorzystując fakt, że jest to prawie XML ;)


@$xml = new SimpleXMLElement($testowy);


I teraz wystarczy pętelka po wierszach tabeli:


foreach ($xml->body->table->tr as $tr) {
// zrób coś z $tr
}
Paweł S.

Paweł S. Zaufanie to podstawa

Temat: pobieranie tekstu z pliku html - funkcja preg_match_all

Tomasz K.:
Paweł Sikora:
to moze nie tak, jak wyswietlić tylko linie miedzy znacznikami ktore podałem powyżej?

O wiele prościej można się dobrać do tej tabelki, wykorzystując fakt, że jest to prawie XML ;)


@$xml = new SimpleXMLElement($testowy);


I teraz wystarczy pętelka po wierszach tabeli:


foreach ($xml->body->table->tr as $tr) {
// zrób coś z $tr
}


hmm... jestem początkującym w php, dlatego prosze o pomoc bo wyświetla mi puste linie... co jest pobierane do zmiennej $tr ?


<?php
$testowy = file_get_contents('http://pl-sport.tv/tabela.html');
@$xml = new SimpleXMLElement($testowy);

echo '<table width="579" border="0"> <tr class="qq"> <td width="92">Data</td> <td width="29">Godz</td> <td width="275">Nazwa Wadarzenia</td> <td width="103">Kategoria</td> <td width="58" class="kanaal">Kanał</td> </tr>';
foreach ($xml->body->table->tr as $tr) {
echo $tr;
}
echo '</table>';
?>

konto usunięte

Temat: pobieranie tekstu z pliku html - funkcja preg_match_all

Paweł Sikora:
hmm... jestem początkującym w php, dlatego prosze o pomoc bo wyświetla mi puste linie... co jest pobierane do zmiennej $tr ?

Zamiast

echo $tr;

użyj

print_r($tr);


Wtedy dowiedz się, jaką strukturę ma $tr.
Paweł S.

Paweł S. Zaufanie to podstawa

Temat: pobieranie tekstu z pliku html - funkcja preg_match_all

dla mnie jakas masakra...

SimpleXMLElement Object
(
[@attributes] => Array
(
[class] => rozmiar
)

[td] => Array
(
[0] => 05/01/11 Środa
[1] => 14:15
[2] => Tour de Ski w Toblach - biegi sprinterskie stylem dowolnym mężczyzn i kobiet
[3] => SimpleXMLElement Object
(
[img] => SimpleXMLElement Object
(
[@attributes] => Array
(
[src] => http://sports4u.pl/ikony/narciarstwo.png
[width] => 20
[height] => 20
)

)

)

[4] => SimpleXMLElement Object
(
[@attributes] => Array
(
[class] => kanaal
)

[a] => SimpleXMLElement Object
(
[@attributes] => Array
(
[href] => http://pl-sport.tv/
[target] => _top
)

[blink] => Kanał - 1
)

)

)

)
Paweł S.

Paweł S. Zaufanie to podstawa

Temat: pobieranie tekstu z pliku html - funkcja preg_match_all

to teraz jak wyswietlić tylko te $tr dla których [class]=rozmiar?
ewentualnie pola 1..3 bez 4 z array?Paweł Sikora edytował(a) ten post dnia 04.01.11 o godzinie 09:54
Paweł S.

Paweł S. Zaufanie to podstawa

Temat: pobieranie tekstu z pliku html - funkcja preg_match_all

Zrobiłe za pomocą substr, strpos, replace...
wybrałem tekst, usunałem co mnie nie interesuje i wyświetliłem...

chciałem po bożemu ale nie szło więc zrobiłem workaround'em ;)

mimo wszystko dziękuje Wam za pomoc, zawsze czegoś nowego się od Was nauczyłem.

Następna dyskusja:

[php][pobieranie tekstu z h...




Wyślij zaproszenie do