[php] preg_match_all - problem

0

Napisałem taki skrypt, operujący tylko na jednym pliku, dla sprawdzenia czy działa:

<?php
$plik = '1.php';
$uchwyt = fopen ($plik,'r');

$data = file_get_contents($plik);

preg_match_all ('|^</a></td><td class="row4">(.*)</a></td><td class="row4" align=center>?|s',"$data",$out,PREG_PATTERN_ORDER);

echo $out[1][0];

fclose($uchwyt);
?>

i przy załadowaniu do pliku '1.php' takich informacji:

</a></td><td class="row4"> Dżordż Busz </a></td><td class="row4" align=center>

</a></td><td class="row4"> Napoleon Bonaparte </a></td><td class="row4" align=center>

</a></td><td class="row4"> Czak Noris </a></td><td class="row4" align=center>

</a></td><td class="row4"> Arnold Szwarceneger </a></td><td class="row4" align=center>
</CODE>

skrypcik działa wyśmienice :)

Ale jak w pliku znajdują się inne dane, to nie chce działać :(

Oto fragment kodu tego drugiego pliku:

</a></td>Dżordż Busz</td>3</td>685</td>PROMiSE</td>SaVaTaGe
</td>Gönderilme Tarihi: 07/10/2004, 0104
Onay Zamaný: 07/10/2004, 0151
Onaylayan: SaVaTaGe
</td></tr>icon-1.gif
</td>Napoleon Bonaparte</td>0</td>435</td>DcN</td>s_ofsilence
</td>Gönderilme Tarihi: 07/10/2004, 0058
Onay Zamaný: 07/10/2004, 0041
Onaylayan: s_ofsilence
</td></tr>icon-1.gif
</td>Czak Noris</td>0</td>252</td>Bilgi Yok</td>LaUNCHeR
</td>Gönderilme Tarihi: 06/10/2004, 2040
Onay Zamaný: 06/10/2004, 2131
Onaylayan: DeaDy
</td></tr>icon-1.gif
</td>Arnold Szwarceneger </td>0</td>460</td>DvP</td>smarty
</td>Gönderilme Tarihi: 06/10/2004, 1940
Onay Zamaný: 06/10/2004, 1909
Onaylayan: SoZe
</td></tr>icon-1.gif
</CODE>

0

Nie .* ale .*? jeśli chcesz złapać poszczególne linie osobno.
I po co ten '?' na końcu? Wiesz, że on odnosi się tylko do poprzedzającego go znaku '>'.

Wygląda to tak:
user image

0

dalej nie działa :(
nie wiem o co chodzi
poprawiłem na (.*?)
usunąłem znak zapytanie i nie działa :(

wyrażeń regularnych uczyłem się dzięki temu artykułow:
http://www.gajdaw.pl/php/wyrreg.html

0

No ale co nie działa? Widzisz na screenie jak to działa. Napisz co chcesz osiągnąć!

0

chcę powyciągać informacje zawarte pomiędzy tym

</a></td>

a tym

</a></td>

i zapisać to w tablicy :)
później ew. to do pliku zapisze..
nie chcę całych linii osobno czytać, bo w tym pliku jest kilka wystąpień tych stringów w jednej linii..

na screenie są zaznaczone całe znalezione wyrażenia
a ja chcę tylko to (.*) zapisać do tablicy

0

A patrzyłeś, co wyrzuca przy print_r($out); ??

0

Zagadałeś mnie na gg i nie zdążyłem dodać tego przed Adamem :P Ale i tak napiszę:

"Bo screen pokazuje całe znalezione wyrażenie. To, co w () leci do pierwszego backreferences."

0

dziekuje panowie !
już śmiga

1 użytkowników online, w tym zalogowanych: 0, gości: 1