Cytat(balgareth @ 26.03.2007, 11:20:31 )

<?php
preg_match_all( '/<br>([tel.:,a-z,0-9,A-Z,Ż,Ź,Ć,Ń,Ł,Ś,Ą,Ę,Ó,ż,ź,ć,ń,ł,ś,ą,ę,ó,.,-,(,),/,,, *]*)/', $strona , $b ); ?>
Znaków w wyrażeniu regularnym nie oddziela się znakiem przecinka. Gwiazdka oznacza wielokrotne lub żadne powtórzenie się danego wyrażenia i powinna być umieszczana po wyrażeniu regularnym. Wiec usuń ją z środka wyrażenia (tzn pomiędzy []). Poza tym, lepszy by był znak + który oznacza powtórzenie jeden, lub więcej razy. Jeśli chodzi o polskie znaki, to mogą być problemy z kodowaniem. Strona jest kodowana w ISO a notatnik (jesli w nim piszesz) zapisuje domyślnie w Windows-1250. Dlatego powinieneś sprawdzić kody polskich znaków w ISO i może wyświetlić je za pomocą funkcji
ord().
Na początku wyrażenia piszez 'tel.:' co nie oznacza, że będzie szukał ciągów zaczynających sie od tel, a ciągów które zawierają w sobie znaki 't', 'e', 'l', '.', ':' ale w obojętnej kolejności. Znaki ( i ) są znakami specjalnymi, więc w wyrażeniu powinieneś poprzedzić je ukośnikiem. Ogólnie dziwie się, że tobie zwróciło to jakieś dane.
Spróbuj coś takiego, kod zbyt piękny nie jest, ale pisany na szybko był:
<?php
preg_match_all( '/<img src=images/st1.gif border=0>([[:print:]]+)n</nobr>n</td>n<td class="text_body" width=60% valign=top align=left>n<table>n<tr><td class="menu" valign=top align=left>([[:print:]]+)</td></tr>n<tr><td class="text_body" valign=top align=left>([[:print:]]+)</td></tr>n<tr><td class="text_body" valign=top align=left>([[:print:]]+)</td></tr>n<tr><td class="text_body" valign=top align=left><a href="mailto:([[:print:]]+)">/', file_get_contents('http://www.pbp.com.pl/index.php?page=10&sk=agenci') , $b ); ?>