Avatar billede michaelb.dk Nybegynder
18. november 2005 - 19:00 Der er 8 kommentarer og
1 løsning

Åbne php dokument

Hvordan ka jeg hive alle linier ud af et andet dokument på en seperat side, således at jeg har direkte adgang til at fjerne linier fra f.eks. database.php fra f.eks. admin.php?
Avatar billede olebole Juniormester
18. november 2005 - 19:29 #1
<ole>

Åben dokumentet, læs det, ret den resulterende streng og skriv den rettede streng i dokumentet ... luk dokumentet til sidst:
    http://dk2.php.net/manual/da/function.fopen.php

/mvh
</bole>
Avatar billede nizo Nybegynder
18. november 2005 - 19:36 #2
fopen er en lidt lang varig process..

file_get_contents() for at hive det hele ud,

file_put_contents() for at gemme redigeringerne..


Det fungere paa samme maade som redigeringer af txt filer..
Avatar billede olebole Juniormester
18. november 2005 - 22:24 #3
1. fopen er ikke langsommere end file_get_contents ... tværtimod
2. file_put_contents virker kun under PHP5+
Avatar billede nizo Nybegynder
19. november 2005 - 11:50 #4
Et citat fra php.net
Note:  If you just want to get the contents of a file into a string, use file_get_contents() as it has much better performance than the code above.

Koden ovenover, viser hvordan man læser filen.
file_get_contents erstatter fopen + fread + fclose.
Avatar billede olebole Juniormester
19. november 2005 - 14:22 #5
Nuvel, men har du - som jeg - testet, hvilken metode, der er hurtigst? Hvis ikke så prøv det ... og du vil finde ud af, at fopen er hurtigst  ;o)
Avatar billede olebole Juniormester
19. november 2005 - 14:25 #6
Kald f.eks. dette dokument med og uden query-strengen '?bla=bla':

<?
function microtime_float() {
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
}

$path = "test2.php";

$startTime = microtime_float();

if ( isset($_GET["bla"]) && $_GET["bla"]=="bla" ) {
    for ($i=0; $i<5000; $i++) {
        $fp = fopen($path, "r");
        $str = fread($fp, filesize($path));
        fclose($fp);
    }
} else {
    for ($i=0; $i<5000; $i++) {
        $str = file_get_contents($path);
    }
}

$endTime = microtime_float();

print $endTime - $startTime;
?>

Dokumentet læser filen 'test2.php' 5.000 gange. Prøv det  :)
Avatar billede nizo Nybegynder
19. november 2005 - 16:26 #7
Du har ret, men det er kun én tiende del mere..
Avatar billede michaelb.dk Nybegynder
02. februar 2006 - 15:48 #8
Jeg fik det aldrig til at virke?
Jeg er desværre for lidt teknisk til at forstå dit første svar, ole :-)
Avatar billede michaelb.dk Nybegynder
02. april 2006 - 21:15 #9
Må nok lukke
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