Avatar billede superb Nybegynder
06. august 2007 - 20:22 Der er 6 kommentarer og
1 løsning

metasearch - ereg_replace m.m

Jeg har fundet et script cybercrawl, http://sourceforge.net/projects/cybercrawlme/ der skulle kunne søge på flere sider samtidig.
men jeg kan ik få det til at virke.
Så derfor er ville jeg høre om nogen kunne forklare mig lidt om nedenstående kode der er fra scriptet:
<?
  $query = ereg_replace(" ","+",$query);
  $submit_url = "http://search.excite.com/search.gw?search=".$query."&lang=de";

  $file = fopen($submit_url, "r");
  $rf = fread($file, 50000);
  $tmp1=ereg_replace("\n","",$rf);
  $tmp1=ereg_replace("<HTML><HEAD><TITLE>(.*)<td valign=\"top\" align=left width=1600><font face=\"helvetica\" size=-1><ul><li> ","%break% %linkstart%",$tmp1);
  $tmp1=ereg_replace("</font></li><p></ul></font><table border=0 cellpadding=2>(.*)</body></html>","%descend%",$tmp1);
  $tmp1=ereg_replace("<li> ","%break%%linkstart%",$tmp1);

  $tmp=explode("%break%", $tmp1);

        global $ex_link, $ex_desc;
        while(list($key,$val) = each($tmp))
                if($key){
                  $val=ereg_replace("\n","",$val);
                  $val=ereg_replace("</A>(.*)<br><font size=-2>","</A>%linkend% %descstart%",$val);
                  $val=ereg_replace("</font></li><p>","%descend%",$val);
                  $grab1 = eregi("%linkstart%(.*)%linkend%", $val, $link); # Link erfassen
                  $grab2 = eregi("%descstart%(.*)%descend%", $val, $desc); # Description erfassen
                  $link[1]=ereg_replace("http://search.excite.com/relocate/sr=(.*);http://","http://",$link[1]);
                  $link[1]=ereg_replace("\">","\" target=\"_parent\">",$link[1]);
                  $ex_link[]=$link[1];
                  $ex_desc[]=$desc[1];
                }

  fclose($file);

?>

Det jeg gerne vil vide er:
1. Hvad gør  global $ex_link, $ex_desc; og linierne nedenunder?
2. Det vigtigste! Hvordan får jeg den til at udskrive det fundne resultat?
Avatar billede jakobdo Ekspert
06. august 2007 - 21:30 #1
1.a: http://www.php.net/global
1.b: Den tager hvert $tmp element (fra et array, som laves her: $tmp=explode("%break%", $tmp1);)
Så erstattes en masse kode og tegn og til sidst indsættes links i dit $ex_link og $ex_desc arrays.

2: Prøv at udskriv:
echo '<pre>';
print_r($ex_link);
print_r($ex_desc);
echo '</pre>';
Avatar billede superb Nybegynder
07. august 2007 - 16:03 #2
1b. så den replacer både der og oppe i ereg_replace??
2. den er er bare blank når jeg prøver.
Avatar billede jakobdo Ekspert
08. august 2007 - 07:23 #3
1b: I toppen starter den med at lave en søgning.
Og bagefter tager den så hvert link og klipper det til. (fjerner tags) og smider i et array.
2: Det kan jo være excite har rettet i deres html kode, og de tags som dine ereg_funktioner leger med, ikke længere passer.
Det kan du som sådan bedst teste ved at udskrive $rf i toppen.
Bagefter udskrive variablerne efter hvert funktionskald. (langsom process, men så kan du faktisk selv finde frem til hvor det evt. fejler.)
Avatar billede superb Nybegynder
08. august 2007 - 20:26 #4
ok tak for hjælpen, nu må vi se om jeg kan få det til at virke, så et sted på nettet at jeg ik er den eneste der ik har kunnet få det til at virke, og så ik ud til de andre kunne.. smæk et svar og du skal få dine point :) jeg har ihvertfald lært noget så det fortjent.
Avatar billede jakobdo Ekspert
08. august 2007 - 21:44 #5
Jeg har leget lidt med noget slamkode:

<?
//http://www.eksperten.dk/spm/790510

function print_rr($input)
{
    echo '<pre>';
    print_r($input);
    echo '</pre>';
}

//$query = ereg_replace(" ","+",$query);
$query = 'eksperten';
$submit_url = "http://search.excite.com/search.gw?search=".$query;
$content = file_get_contents($submit_url);
$ex_link = array();
$ex_desc = array();
if(preg_match_all('%<a\shref="http://msxml.+?</span></div><div id="displayurl">%', $content, $result))
{
    for ($i = 0; $i < count($result[0]); $i++)
    {
        if (preg_match('/rawto=(.+?)"/', $result[0][$i], $match))
        {
            $ex_link[] = $match[1];
        }
        if (preg_match('%<span\sclass="Body-Text">(.+?)</span>%', $result[0][$i], $match))
        {
            $ex_desc[] = $match[1];
        }
    }
}

print_rr($ex_link);
print_rr($ex_desc);

?>
Avatar billede jakobdo Ekspert
08. august 2007 - 21:44 #6
Og så får du det svar.
Avatar billede jakobdo Ekspert
09. august 2007 - 07:43 #7
Takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester