Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyszukanie linków na stronie zawierającą dowolną frazę z tablicy
Forum PHP.pl > Forum > PHP
Darek M.
Witam,
posiadam tablicę:
  1. $domains = array('example.com', 'przykad.pl', 'jeszczeinnastrona.ru');

i chciałbym, aby wszystkie linki na stronie, które pochodzą jednej z tych domen były zamieniane na inne. Wiem już, jak wyszukać wszystkie linki na stronie, ale nie wiem, jak sprawdzić, czy pochodzą one z domen podanych w $domains, mianowicie wyszło mi coś takiego:
  1. $doc = new DOMDocument();
  2. @$doc->loadHTML($page);
  3. $tags = $doc->getElementsByTagName('a');
  4. foreach($tags as $tag){
  5. $href = $tag->getAttribute('href');
  6. //if(warunek){
  7. // tu będzie zamiana linku za pomocą setAttribute...
  8. //}
  9. }

Chodzi mi o ułożenie warunku, jaki ma być sprawdzany, dla każdego z linków, zakładając, że link to nie tylko domena, ale również subdomena (cos.example.com) lub katalog (example.com/katalog). Próbowałem kombinować m.in. z str_pos i in_array, ale niestety nie wychodziło tak, jak chciałem. Dodam, że tablica $domains w rzeczywistości jest dynamiczna (dane do niej są wczytywane z bazy MySQL), więc nie wchodzi w rolę stworzenie "stałego" warunku opartego na wartościach z tablicy. Z góry dziękuję za pomoc.
ssstrz
spróbuj tej funkcji: http://stackoverflow.com/questions/1201194...-from-subdomain
  1. function get_domain($url)
  2. {
  3. $pieces = parse_url($url);
  4. $domain = isset($pieces['host']) ? $pieces['host'] : '';
  5. if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $domain, $regs)) {
  6. return $regs['domain'];
  7. }
  8. return false;
  9. }

i Twój warunek:
  1.  
  2. $parsedHref=get_domain($href);
  3. if(!empty($pardedHref)&&in_array($parsedHref, $domains)){
  4. // tu będzie zamiana linku za pomocą setAttribute...
  5. }
Darek M.
Nawet nie pomyślałem, żeby zrobić to w ten sposób. Jest tam literówka w warunku, ale po poprawieniu jej działa, dziękuję bardzo smile.gif
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.