Kom ihåg mig?
Home Menu

Menu


Hjälp med crawler!

Ämnesverktyg Visningsalternativ
Oläst 2009-10-08, 00:34 #1
Landos avatar
Lando Lando är inte uppkopplad
Medlem
 
Reg.datum: Nov 2008
Inlägg: 242
Lando Lando är inte uppkopplad
Medlem
Landos avatar
 
Reg.datum: Nov 2008
Inlägg: 242
Question Hjälp med crawler!

Hej alla!
Jag skall bygga en enkel crawler och jag behöver lite hjälp. Har någon en färdig funktion i PHP som plockar ut länkar ur en klump text och lägger dom i en array?

Tex:

$text = 'sdhdfjzfgkzfhlkzghl<a href="http://www.sdsdh.se">sdfhdzfjfdvkj</a>dsfhdfjdfj';

get_href($text, $array);

//$array = array('http://www.sdsdh.se');

Den måste kunna ta _alla_ länkar. Med eller utan www efter http://.

Tacksam för svar.
Lando är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-08, 01:46 #2
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Enkelt och för det mesta tillräckligt:
Kod:
preg_match_all('#<a[^>]* href="([^"]+)"[^>]*>([\w\W]+)</a>#i', $text, $matches);
I $matches[1] hittar du dina länkar och i $matches[2] dina länktexter, förutsatt att det är (i vissa aspekter) korrekt HTML.
Clarence är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-08, 01:55 #3
Landos avatar
Lando Lando är inte uppkopplad
Medlem
 
Reg.datum: Nov 2008
Inlägg: 242
Lando Lando är inte uppkopplad
Medlem
Landos avatar
 
Reg.datum: Nov 2008
Inlägg: 242
Funkar inte alls. Kolla:

http://lando.se/c.php

//Kod

$text = file_get_contents("http://www.youtube.com");

preg_match_all('#<a[^>]* href="([^"]+)"[^>]*>([\w\W]+)</a>#i', $text, $matches);

header("Content-type: text/plain");
print_r($matches);

Senast redigerad av Lando den 2009-10-08 klockan 02:02 Anledning: Glömde ";" i inlägget men ej i filen
Lando är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-08, 02:21 #4
Jawns avatar
Jawn Jawn är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Aug 2004
Inlägg: 986
Jawn Jawn är inte uppkopplad
Mycket flitig postare
Jawns avatar
 
Reg.datum: Aug 2004
Inlägg: 986
preg_match_all('@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@', $text, $matches);
Jawn är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-08, 02:29 #5
Nerox Nerox är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2005
Inlägg: 37
Nerox Nerox är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2005
Inlägg: 37
Jag suger på regexp så gjorde en loop etc..


Kod:
function get_href($string) {
	$result = array();
	$x = 0;
	$array_1 = explode("href=\"",$string);
	foreach ($array_1 as $k => $v) {
		if(strstr($v,"http://") == true) {
			$v = substr($v,0,stripos($v,"\""));
			$result[$x++] = $v;
		}
	}
	return $result;

}
Nerox är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-08, 17:16 #6
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Citat:
Ursprungligen postat av Lando Visa inlägg
Funkar inte alls. Kolla:

http://lando.se/c.php

//Kod

$text = file_get_contents("http://www.youtube.com");

preg_match_all('#<a[^>]* href="([^"]+)"[^>]*>([\w\W]+)</a>#i', $text, $matches);

header("Content-type: text/plain");
print_r($matches);
Blev visst lite sent för regexp Lägg till U modifiern så funkar den. Alltså:
Kod:
preg_match_all('#<a[^>]* href="([^"]+)"[^>]*>([\w\W]+)</a>#Ui', $text, $matches);
Notera dock att denna tar vilken text som helst i href, inte bara http-adresser
Clarence är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 23:49.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017