Avatar billede apromis Praktikant
28. marts 2006 - 14:34 Der er 20 kommentarer og
1 løsning

Find billeder på siden, men?

Hej allesammen.

Bruger denne kode :
$content = file_get_contents($sti);
if(preg_match_all('/img src="(.+?)"/', $content, $output)){}
return $output[0][4];

Til at finde alle billederne på en side. Og retunere billede 4.

Men ville gerne have den ikke tog de billeder med som hed noget af disse : "header" og "broder".


Kan man lave det ?

På forhånd tak.
Avatar billede coderdk Praktikant
28. marts 2006 - 17:45 #1
Hvad med at bruge array_filter?

function checkItem($item)
{
  return ( strpos( $item, "header" ) > 0 || strpos( $item, "broder" ) > 0 );
}

Med en lidt modificeret del af din kode:

if(preg_match_all('/img src="(.+?)"/', $content, $output)){}
$result = array_filter($output[0], "checkItem");
return $result;
Avatar billede coderdk Praktikant
28. marts 2006 - 17:45 #2
return $result[4] skulle det have været...
Avatar billede apromis Praktikant
28. marts 2006 - 19:11 #3
Vil den så tage de 4 billede af dem den finder ?
Avatar billede apromis Praktikant
28. marts 2006 - 19:19 #4
Den finder dem stadig..
billeder hvor Header er indblandet bliver ikke plukket fra :( ..
Avatar billede coderdk Praktikant
28. marts 2006 - 19:44 #5
Header eller header - stort eller småt - der er forskel. Hvis det er med stort, så ret funktionen. Ellers brug preg_match/eregi...
Nu jeg tænker mig om bør det faktisk være:

function checkItem($item)
{
  return ( strpos( $item, "header" ) == 0 && strpos( $item, "broder" ) == 0 );
}


:)
Avatar billede apromis Praktikant
28. marts 2006 - 23:28 #6
Så spørger jeg igen :P

Function checkItem($item)
{
  return ( strpos( $item, "header" ) == 0 && strpos( $item, "broder" ) == 0 );
}
if(preg_match_all('/img src="(.+?)"/', $content, $output)){}
$result = array_filter($output[0], checkItem);
return $result[1];

Den giver desværre denne fejl :


Fatal error: Cannot redeclare checkitem() (previously declared in /home/www/web82/html/mysex/findt.php:26) in /home/www/web82/html/mysex/findt.php on line 26

som er:
Function checkItem($item)

Det nok fordi item er tom, men hvad skal der ind :S
Avatar billede coderdk Praktikant
29. marts 2006 - 00:38 #7
Den skal se sådan ud:

function checkItem($item)
{
  return ( strpos( $item, "header" ) === false && strpos( $item, "broder" ) === false )
}
if(preg_match_all('/img src="(.+?)"/', $content, $output)){}
$result = array_filter($output[0], "checkItem");
return $result[1];

:)
Avatar billede coderdk Praktikant
29. marts 2006 - 00:39 #8
Bemærk at jeg har ændret til === false og at jeg har smidt " omkring i array_filter
Avatar billede apromis Praktikant
29. marts 2006 - 12:09 #9
jeg får en fejl :S
Parse error: parse error, unexpected '}' in /home/www/web82/html/mysex/findt.php on line 29
som er
} i slutningen af funktionen checkitem.
Avatar billede coderdk Praktikant
29. marts 2006 - 12:18 #10
Der mangler et ; i slutningen af return linjen :P
Avatar billede apromis Praktikant
29. marts 2006 - 12:41 #11
jeg for samme fejl :(
Fatal error: Cannot redeclare checkitem() (previously declared in /home/www/web82/html/mysex/findt.php:26) in /home/www/web82/html/mysex/findt.php on line 26
Avatar billede coderdk Praktikant
29. marts 2006 - 12:59 #12
Du gør noget forkert, smid koden her og lad os se :)
Avatar billede apromis Praktikant
29. marts 2006 - 13:03 #13
Du for lige en del af min kode, da den er lang:

Function testfilm($sti) {
$content = file_get_contents($sti);
function checkItem($item)
{
  return ( strpos( $item, "header" ) === false && strpos( $item, "broder" ) === false );
}
if(preg_match_all('/img src="(.+?)"/', $content, $output)){}
$result = array_filter($output[0], "checkItem");
return $result[1];
}


Den bliver kaldt så ledes :
$test = testfilm($side[0]);

$side[0] indeholder en hjemmeside adresse.

Kan du så fejlen af denne stump ?
Avatar billede coderdk Praktikant
29. marts 2006 - 13:27 #14
Hvad er linje 26? Du kan roligt flytte checkItem funktionen ud på samme niveau som testfilm er...
Avatar billede apromis Praktikant
29. marts 2006 - 13:56 #15
for ikke nogen fejl mere, men der er en anden ting som går galt.

Det kun billedet som ikke må hedde noget med broder og header.

hvis et billede har denne sti:
<img src="www.domæne.dk/billede.jpg" border="1">

Afviser scriptet også denne fil :( ..
Avatar billede apromis Praktikant
29. marts 2006 - 13:57 #16
altså billede må ikke hedde noget ala:
header_23.jpg
broder_2.jpg
Avatar billede coderdk Praktikant
29. marts 2006 - 14:54 #17
Prøv lige:

function checkItem($item)
{
  return ( strpos( $item, "header" ) === false && strpos( $item, "broder" ) === false );
}

function testfilm($sti)
{
    $content = file_get_contents($sti);
    $result = "";
    if ( preg_match_all('/img src="(.+?)"/', $content, $output) )
    {
        $tmp = array_filter($output[1], "checkItem");
        $result = $tmp[4];
    }
    return $result;
}

Den afviser billeder der hedder noget med header og broder i navnet :) Den returnerer det 4. billede...
Avatar billede apromis Praktikant
29. marts 2006 - 15:05 #18
Tusind tak det virker.

Har et spm, mere men opretter et net spm, da du virkelig har gjordt det godt :D..

Der du meget velkommen til at svarer. Da det handler om samme funktion.

Svar.
Avatar billede coderdk Praktikant
29. marts 2006 - 15:35 #19
Ah godt det virker :)
Avatar billede apromis Praktikant
29. marts 2006 - 16:35 #20
Coderdk

kan virkelig ikke få det til at virke igen.. Det virkede lige hurtigt..

Kig efter en ny tråd :P
Avatar billede apromis Praktikant
29. marts 2006 - 17:47 #21
bare lig for du ser den :D
http://www.eksperten.dk/spm/699116
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