Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wyrażenia regularne
Forum PHP.pl > Forum > PHP
nabuchodonozor_plt
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)
Łukasz O.
  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)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.