Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> document.links w php (DOM)
Dex1987
post 15.01.2007, 16:50:51
Post #1





Grupa: Zarejestrowani
Postów: 246
Pomógł: 0
Dołączył: 28.09.2004

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


Witam,

probuje zrobić w php funkcje działającą tak samo jak document.links (JS). Szukałem na pl.php.net/dom jakiegoś odpowiednika, ale nie widziałem niczego podobnego, probowałem coś kombinować z getAtribute, ale nie wchodziło mi to. Czy jest w ogóle możliwe zrobienie czegoś takiego tylko w php, jeśli tak to proszę o jakieś nakierowanie.

Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Cysiaczek
post 15.01.2007, 18:16:49
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Yhh? Tzn jak? Chcesz w php wyciagnąc linki jakie są w dokumencie? Coś nie rozumiem: /


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
Dex1987
post 15.01.2007, 18:34:53
Post #3





Grupa: Zarejestrowani
Postów: 246
Pomógł: 0
Dołączył: 28.09.2004

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


@Cysiaczek w JS masz taka funkcje document.links, to jest tablica z wszystkimi linkami z danego pliku html, potrzebuje takiej funkcji w php, np: wczytuje za pomaca file_get_contents plik html, i dodaje do jakiejś zmiennej wszystkie linki z tego dokumentu, przed chwilą bawiłem się DOMDocuments i udało mi sie wyciągnąc nazwę linku (<a href="plik.php">nazwa linku</a>), ale ja potrzebuje wyciągnąć plik.php, probowałem ułożyć wyrażenie regularne, ale nie mogę napisać takiego które będzie działać w większości przypadków, tzn:

Kod
<a href="link">link</a>
<a href='link'>link</a>
<a href=link>link</a>
<a href=link class="">link</a>
<a href="link">link</a>


itp... różnie ludzie piszą i trudno jest napisać takie wyrażenie które będzie działać w większości przypadków, dodatkowo document.links rozpoznaje czy link jest adresem tylko do pliku (href="index.php") czy adresem do pliku wraz z domeną (href="http://domena.pl/index.php"), jeśli jest tylko adresem do linku dodaje domenę.

Ogólnie mówiąc chce napisać funkcję która będzie wyszukiwać wszystkie linki i dodawać je do tablicy, dodatkowo jeśli nie będzie w linku domeny, funkcja sama ją doda, czyli coś takiego jak odpowiednij javascriptowej funkcji document.links tylko w php.

Ten post edytował Dex1987 15.01.2007, 18:36:04
Go to the top of the page
+Quote Post
Cienki1980
post 15.01.2007, 18:49:22
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Gotowego chyba nic nie ma ... jedynie coś stworzyć samemu.

Ja bym szukał tekstu href .... potem znaczników > < oraz string'a między nimi.

Potem usunąć spacje za pomocą trim() .... no i może sprawdzenei czy jest tam string http:// ...

I jakoś tak może by zadziałało.


--------------------
404
Go to the top of the page
+Quote Post
lopik
post 15.01.2007, 18:57:57
Post #5





Grupa: Zarejestrowani
Postów: 340
Pomógł: 0
Dołączył: 7.07.2006

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


A musi to być w php questionmark.gif


--------------------
w3c & c++
Go to the top of the page
+Quote Post
Dex1987
post 15.01.2007, 19:04:12
Post #6





Grupa: Zarejestrowani
Postów: 246
Pomógł: 0
Dołączył: 28.09.2004

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


@lopik: tak, napisałem to w ajax/php ale nie odpowiada mi takie rozwiązanie.
@Cienki1980: jeśli nie znajdę nic podobnego, będę musiał kombinować z preg_match, co prawda napisałem coś takiego ale, ale daleko mojej funkcji do document.links

Pozdrwiam
Go to the top of the page
+Quote Post
ActivePlayer
post 15.01.2007, 19:07:19
Post #7





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


moze zawierac bugi:
  1. <?php
  2. function get_links_from_href($string, $from_site){
  3. if(!$string || !$from_site)return;
  4. $end=array();
  5. $end['url_inside']=0;
  6. $end['url_outside']=0;
  7. $url=parse_url($from_site);
  8. $url['dir']=preg_replace("|^(.*)/.*..*$|i","1",$url['path']);
  9. preg_match_all("/<a href=["']{1}(.*?)["']{1}/i",$string,$links);
  10. for($o=0;$o<count($links[1]);$o++){
  11. if($links[1][$o] && !ereg("^(java script:|gg:|mailto:)",$links[1][$o])){
  12.  
  13. if(ereg("^?",$links[1][$o]))$links[1][$o]="http://".$url['host'].$url['path'].$links[1][$o];
  14. if(!ereg("^http://",$links[1][$o])){
  15. $links[1][$o]="http://".$url['host'].(!ereg("^/",$links[1][$o])?(!ereg("/$",$url['dir'])?$url['dir']."/":$url['dir']):(ereg("/$",$url['dir'])?substr($url['dir'],0,-1):$url['dir'])).$links[1][$o];
  16. $end['url_inside']++;
  17. }else{$end['url_outside']++;}
  18. $end[]=$links[1][$o];
  19. }
  20. }
  21.  
  22. return $end;
  23. }
  24. ?>


jako $string podajesz źródło strony, jako $from_site jej adres.
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: 14.08.2025 - 09:15