Avatar billede simm Nybegynder
29. september 2004 - 10:15 Der er 9 kommentarer og
1 løsning

Vise titel i stedet for filnavn

Hej! Jeg skal til at lave en funktion der viser filnavnet i en bestemt mappe, det er rimelig simpelt, men i stedet vil jeg gerne have, at den viser indholdet af <title> </title> fra hver fil sammen med filnavnet.

Men hvis man be'r PHP om at loope gennem alle filer hver gang man kalder menuen for at finde titlen - er det ikke noget der tager lang tid?

Er der nogen der har eksempler på, hvordan man gør?
(scriptet skal fortrinsvist bruges på sider med 5-20 links)

På forhånd tak
Simon
Avatar billede Slettet bruger
29. september 2004 - 10:58 #1
Avatar billede simm Nybegynder
29. september 2004 - 11:14 #2
Hej Pacr00n, tak skal du have .. er det et jeg må bruge kvit og frit?
Avatar billede simm Nybegynder
29. september 2004 - 11:15 #3
har lige luret.. genialt !! :)
Avatar billede Slettet bruger
29. september 2004 - 11:18 #4
Det skal du bare være velkommen til :)
Håber det kan bruges.

--
pacroon

PS: Nu er det jo ikke kvit og frit, du gav mig jo point for det.. hehe!
Avatar billede olebole Juniormester
29. september 2004 - 13:00 #5
<ole>

'Genialt' kræver vel, der er tænkt bare en smule over effektiviteten i koden  :)

for($i=0; $i < count($filenames); $i++)
    if($filenames[$i] != '.' && $filenames[$i] != '..' && $filenames[$i] != 'index.php') {
    $fileinfo = file_get_contents($filenames[$i]);
    preg_match("|<title>(.*?)</title>|is", $fileinfo, $title);
    $s .= "<li><a href=\"$filenames[$i]\">$filenames[$i]</a></li>\n";
    $s .= $title[1];   
    }
echo $s."<br><br>";
show_source(__FILE__);

... giver en væsentlig performance-forbedring. Det er helt elementær kodeskik i alle sprog, at man konkatenerer en streng-buffer (eller en array-buffer, der joines til slut) og skriver ud ét sted  ;o)

/mvh
</bole>
Avatar billede simm Nybegynder
29. september 2004 - 14:41 #6
olebole: Okay, tak for info ;o) Kender du nogle gode bøger omkring kodeoptimering osv.?  jeg synes tit det er noget, som der skøjtes let hen over, i de forskellige grundbøger omkring programmering. (.. måske fordi det netop er grundbøger)
Avatar billede olebole Juniormester
29. september 2004 - 14:46 #7
Eller også er det ikke grundbøger, men hobbybøger. Grundbøger burde dække en del af den slags, men om de gør det, ved jeg faktisk ikke rigtig  :)
Avatar billede Slettet bruger
29. september 2004 - 19:12 #8
olebole: Jeg forstår ikke helt hvad du har gjort som optimerer den væsentligt - men jeg vil gerne lære det så jeg kan benytte det i fremtiden.

Hvad betyder det for processen, at appende det til $s ?

--
pacroon
Avatar billede Slettet bruger
29. september 2004 - 19:17 #9
Oh, nu har jeg forstået det. Tak for hjælpen, det skal jeg huske :)
Avatar billede olebole Juniormester
13. oktober 2004 - 15:33 #10
Ooooops .... under oprydning i gamle mails, fandt jeg denne. Undskyld, jeg ikke svarede  :)

Selvom du nok har fundet ud af det, så er udskrivning i en løkke langsommeligt - og det er det i alle sprog. Da det er selv udskrivningen til skærmen, der er langsom, nøjes man derfor med at udskrive én gang.

Normalt vil man samle en streng-buffer, som jeg gjorde i eksemplet med '$s'. I JavaScript er det dog endnu hurtigere at samle et array, som join'es tilsidst:

var a = new Array();
for ( i=0; i<1000; i++ ) {
  a[a.length] = "Et tal: " + i;
}
document.write( a.join("\n") );

... eller det samme på en lidt mere elegant måde:

var a = new Array();
for ( i=0; i<1000; i++ ) {
  a.push("Et tal: " + i);
}
document.write( a.join("\n") );

Funktionen 'join()' svarer til PHP's 'implode()'. Den samler alle array'ets elementer med et tegn imellem dem.

I JS er denne metode endnu hurtigere end streng-bufferen - og du kan nemt komme op på en hastighedsforøgelse på flere hundrede gange (NB: Flere hundrede _gange_ ... ikke kun flere hundrede procent!). Det er jo altid værd at tage med  ;o)
/mvh
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