Avatar billede okidoky Nybegynder
10. november 2005 - 15:28 Der er 13 kommentarer og
1 løsning

Nogen hjælpe til feed

Jeg har en kode der scanner en side for URL'S.

Det jeg vil gøre er at, de url's jeg får ud skal lægges i min db, hver url må kun være der en gang?

her er koden:

<?php

    $i = 0;
    $url = 'http://www.example.com';
    preg_match( '!http://([^/]+)(/.*)?$!', $url, $m );
    $host = 'http://' . $m[1];
    $path = $m[2];
    if ( strlen( $path ) > 0 && substr( $path, -1 ) != '/' )
    {
        $path = dirname( $path ) . '/';
    }
    $cnt = file_get_contents( $url );
    if ( preg_match_all( '§<a.*?href="(.*?)"§si', $cnt, $m ) )
    {
        foreach ( $m[1] as $link )
        {
            if ( !preg_match( '!^java script:!i', $link ) && $link != '#' )
            {
                if ( !preg_match( '!^http://!', $link ) )
                {
                    if ( $link[0] == '/' )
                    {
                        $link = $host . $link;
                    }
                    else
                    {
                        $link = $host . $path . $link;
                    }
                }
                $i++;
                echo "[$i]&nbsp;$link<br>";
            }
        }
    }

?>
Avatar billede jakobdo Ekspert
10. november 2005 - 15:33 #1
Du kan lave en database, hvor linket er den primære nøgle.
Så kan du bruge INSERT INTO tabel(domain) VALUES($domain)
Den vil ikke sætte noget ind som allerede er der.
Avatar billede okidoky Nybegynder
10. november 2005 - 15:46 #2
Hvordan henter jeg de url's som bliver hentet via den kode?
Avatar billede okidoky Nybegynder
10. november 2005 - 15:47 #3
F.eke.
INSERT INTO links (domain) VALUES (?)
Avatar billede jakobdo Ekspert
10. november 2005 - 16:43 #4
Hvis $link er dine links, så kan du bruge:
mysql_query("INSERT INTO domains(id,domain) VALUES('','".$link."')");
Avatar billede jakobdo Ekspert
10. november 2005 - 16:44 #5
Måske bare:
mysql_query("INSERT INTO domains(domain) VALUES('".$link."')");
og så lad domain være primær nøgle.
Avatar billede okidoky Nybegynder
11. november 2005 - 09:47 #6
Godmorgen eg har lavet det, og det køre fint men :)

hvs der kommer to ens links efter hinanden så skriver den

Duplicate entry 'http://www.internetplus.bizMain-Ar.html' for key 1

hvordan siger jeg til den at den bare skal springe over hvis der kommer en tilsvarende link?
Avatar billede jakobdo Ekspert
11. november 2005 - 09:50 #7
Du kan jo fjerne at tjekke fejl fra mysql...
Avatar billede okidoky Nybegynder
11. november 2005 - 10:02 #8
:) god ide

Jeg vil ikke hele tiden skrive en ny url i $url øverst i koden, jeg har prøvet at hente urls fra db og så på den måde henter den selv urls og finder nye?

$url = mysql_query("select * from links order by desc limit 0,20");
Avatar billede jakobdo Ekspert
11. november 2005 - 11:19 #9
Så skal du lave:
$query = mysql_query("select * from links order by id desc limit 0,20");
$urls = array();
if(mysql_num_rows($query)>0)
{
while($row = mysql_fetch_assoc($query))
{
$urls[] = $row["url"];
}
}
Prøv så at se hvad array'et $urls indeholder.
Den vil jo altid indeholde de nyeste urls!
måske du skulle lave et felt som hed crawlet?
Avatar billede okidoky Nybegynder
12. november 2005 - 13:26 #10
hej igen.. den kode jeg har tilføjer alle links også links til billeder og word, hvad skal jeg gøre så den ikke tilføjer dem?
Avatar billede jakobdo Ekspert
12. november 2005 - 23:22 #11
Så skal du jo tjekke om et link ender på noget skidt! :o)
Måske det er nemmere at tjekke at linket et "ok".
F.eks. php, html, asp, htm, phtml, jsp osv...
Avatar billede okidoky Nybegynder
13. november 2005 - 11:31 #12
ok :=)
send et svar .. og mange tak for din hjælp!
Avatar billede jakobdo Ekspert
13. november 2005 - 12:19 #13
Svar!
Avatar billede jakobdo Ekspert
13. november 2005 - 19:54 #14
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