Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> wyrażenia regularne, linki
nabuchodonozor_p...
post 17.03.2007, 19:25:34
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 2.09.2006

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


Napisałem skrypt, który ściąga kody HTML pewnych stron www.
Chciałbym wyszukać w nich "adresy linków".

Problem powstaje w momencie, gdy próbuje uzyskać pełny adres strony
np. http://www.strona.pl/fol/index.php?fr=a&scn=b.

(zawsze wyrażenie zwraca za dużo lub za mało kodu)

Ostatnia działająca wersja (wyszukuje jedynie "http://www.strona.pl/") :

  1. <?php
  2. preg_match_all('/(http[s]?)://{1}([w.-]+).(w{2,6}){1}/', $tresc_strony , $tablica );
  3. ?>


Czy mógłby mi ktoś napisać, jak rozszeżyć to wyrażenie, aby działało tak, jak zamierzałem ? (tzn. zwracało listę pełnych adresów stron)
Go to the top of the page
+Quote Post
Łukasz O.
post 17.03.2007, 20:28:43
Post #2





Grupa: Zarejestrowani
Postów: 191
Pomógł: 5
Dołączył: 13.01.2007

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


  1. <?php
  2. function remove_html(&$item, $key){
  3. $item=trim(strip_tags($item));
  4. }
  5.  
  6. function get_links($url) {
  7. $preg ="/a[\s]+[^>]*?href[\s]?=[\s\"']+(.*?)[\"']+.*?>"."([^<]+|.*?)?<\/a>/";
  8. preg_match_all(trim($preg), file_get_contents($url), $out, PREG_PATTERN_ORDER);
  9. $keys = $out[1];
  10. $values = $out[2];
  11. array_walk($values, 'remove_html');
  12. return (array_combine($keys, $values));
  13. }
  14. print_r(get_links("http://jakas_strona"));
  15. ?>

(specjalnie w HTML, bo znacznik PHP dziwnie posta escape'uje, a tu każdy slash jest ważny)

Ten post edytował Łukasz O. 17.03.2007, 20:28:57


--------------------
"Don't tell me you want a bridge - show me the canyon you want to cross" Giuseppe Delena
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 Wersja Lo-Fi Aktualny czas: 13.08.2025 - 22:31