Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyrażenia regularne
balgareth
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 8.03.2007

Ostrzeżenie: (0%)
-----


Witam

Niestety po przeszukaniu forum oraz dokumentacji od wyrażeń regularnych nie potrafie poradzić sobie z jednym problemem. Mam stronę internetową Strona na której jest jedno pole select, w którym wybieramy miejscowość, a następnie pojawiają nam się adresy biur podróży. Chciałbym pobrać te adresy dla wszystkich miast które można wybrać w selecie. Jak narazie udało mi się to osiągnąć częściowo poprzez wyrażenie:

  1. <?php
  2. preg_match_all( '/<br>([tel.:,a-z,0-9,A-Z,Ż,Ź,Ć,Ń,Ł,Ś,Ą,Ę,Ó,ż,ź,ć,ń,ł,ś,ą,ę,ó,.,-,(,),/,,, *]*)/', $strona , $b );
  3. ?>



Lecz nie znajduje np wyrażenia "Rynek 25" z miasta Brzesko oraz wielu innych. Niestety nie wiem dlaczego tak się dzieje. Proszę więc o pomoc jak można by to napisać inaczej lub jak to przerobić by chwyciło wszystkie nazwy biur, adresy, telefony.

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
kubarek
post
Post #2





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 19.02.2007

Ostrzeżenie: (0%)
-----


spróbuj dodać \s do wyrażenia regularnego - dopasuje wtedy białe znaki ( spacje, etc. ), więc 'Rynek 25' też powinien znaleźć


--------------------
// ...
Co nieco o mnie ;)
Go to the top of the page
+Quote Post
balgareth
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 8.03.2007

Ostrzeżenie: (0%)
-----


Niestety nie pomogło nadal jest to samo.

Jeszcze jakies pomysły ?
Go to the top of the page
+Quote Post
Michal2000
post
Post #4





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 19.07.2006

Ostrzeżenie: (0%)
-----


Cytat(balgareth @ 26.03.2007, 11:20:31 ) *
  1. <?php
  2. preg_match_all( '/<br>([tel.:,a-z,0-9,A-Z,Ż,Ź,Ć,Ń,Ł,Ś,Ą,Ę,Ó,ż,ź,ć,ń,ł,ś,ą,ę,ó,.,-,(,),/,,, *]*)/', $strona , $b );
  3. ?>


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ł:

  1. <?php
  2. 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 );
  3. print_r($b);
  4. ?>


--------------------
"Wszystko powinno być zrealizowane tak prosto, jak to tylko możliwe, i ani trochę bardziej prosto" Albert Einstein
Go to the top of the page
+Quote Post
balgareth
post
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 8.03.2007

Ostrzeżenie: (0%)
-----


Nie do końca o to mi chodziło gdyż ten kod pasuję do adresów na głównej stronie, które pokazują się za każdym razem a mi bardziej chodziło o te które pojawiają się po wybrania miasta w liscie rozwijanej na samym dole strony. Ale narazie dziękuje może po poprawieniu błedów uda mi się dojść do ładu z tym.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 07:00