Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyszukanie linków na stronie zawierającą dowolną frazę z tablicy
Darek M.
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 4.05.2013

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


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.
Go to the top of the page
+Quote Post
ssstrz
post
Post #2





Grupa: Zarejestrowani
Postów: 103
Pomógł: 17
Dołączył: 15.12.2012

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


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. }


Ten post edytował ssstrz 4.05.2013, 17:01:49
Go to the top of the page
+Quote Post
Darek M.
post
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 4.05.2013

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


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
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 - 15:34