04. november 2004 - 10:52Der er
71 kommentarer og 1 løsning
Læse første 3 bogstaver i anden linie i fil
Hej
Jeg har brug for at læse, og skrive, de tre første tal - i anden linie, i en fil på min server. Hvordan gør man det? Jeg har lavet et script der læser HELE anden linie, men det er desværre for meget.
det tør jeg ikke at sige - men det kan man finde ud af med et script ik? (jeg uploader direkte til et webhotel - har ikke PHP installeret på min maskine, desværre)
Måske er det noget med genkendelsen af 'newline' der driller. fgets() skulle læse indtil enten den angivne længde eller 'newline'. Fx Macintosh laver nogle specielle 'newline' koder. Ved du hvilken computer filen er lavet på/ligger på?
Et lille ekstra ord om file(): Funktionen returnerer et dokuments indhold som et array af linier. Normalt bør man undgå den, hvis man ikke har brug for at kunne læse filen 'binary-safe' (binary-safe gør funktionen langsom). Her er dette dog ikke noget problem, da PHP-versionen er fra før, file() blev binary-safe ;o)
detox >> Ja, det er helt korrekt, men det må komme anpå fil-størrelsen og hvor ofte, den skal læses. Det var blot for at vise en anden mulighed ... og nu driblede I jo lidt rundt med problemer vedr. forskellige 'etniske' tegn - og noget ;o)
Nej, der er ingen parse errors. Det _kan_ der ikke være. Det _er_ noget, du selv har introduceret. Du har helt ret detox (man skal passe på med at lave to ting på én gang):
$fil = 'http://www.google.dk'; $aFil = file($fil); for ($i=1; $i<count($aFil); $i++) { if ( trim($aFil[$i])<>"" ) break; } $line = trim($aFil[$i]);
så lykkedes det - jeg slettede indrykket på førnævnte linie. er bange for min editor havde sat nogle mærkelige tegn ind.. :( (mac) - smid et svar! og tak for hjælpen
Det med indrykningerne minder mig pludselig om en længere fight, jeg havde med Admin for år tilbage, da jeg selv var ren Macintosse. Eksperten kunne ikke håndtere indrykninger fra en Mac ... så den er god nok. Der er noget specielt med MacOS' indrykninger ;o)
rasmus_a >> Nej, jeg er ikke en forhenværende tosse ... jeg er bifil ... ehhh ... til begge dele ... ehhhhm .... ja, jeg er altså til både PC og Mac ;D
det er noget med en bug i den php version der ligger på serveren. det underlige er bare at jeg har prøvet at køre scriptet på en anden server med phpversion 4.3.8 - og det virker stadigvæk ikke. filen der skal læses ligger naturligvis stadigvæk på den samme server med phpversion 4.1.2 men det burde jo være ligemeget... mystisk! sukos> jeg har også prøvet med dit script.
hmm og dog.. første linie set, som sagt, ud som følger: <?php die("No access allowed."); ?>
Men bruger jeg følgende script: $fil = 'http://www.google.dk'; $aFil = file($fil); for ($i=0; $i<count($aFil); $i++) { if ( trim($aFil[$i])<>"" ) break; } $line = trim($aFil[$i]);
print substr($line, 0, 5);
(altså første linie) så udskriver den følgende: "No ac" og ikke "<?php"
Kan det hjælpe? Hvorfor springer den over PHP koden som en browser ville gøre det? Den skal jo bare læse indholdet - ikke "køre" det. Det forklarer måske hvorfor den "die'er" efter første linie?
Ja, prøv bare! :O) Og en anden ting, et er hvad du får vist i browseren, noget andet hvad der står i kildekoden, (vis kilde), altså, prøv at brug vis kilde, for at tjekke hvad som php egentlig udskriver
Så virker det sgu!! :D jeg brugte den her: <?php $find = file($_SERVER["DOCUMENT_ROOT"] ."/file.txt"); echo substr(trim($find[1]), 0, 3); ?> TAK! smid et svar :D
ja men det var jeg også klar over - bare mærkeligt den ville godtage den første linie så.. måske er det noget af den bug olebole omtalede.. det kan han lige selv kommentere hvis han ser dette :) tak for hjælpen alle sammen. god weekend!
Synes godt om
Ny brugerNybegynder
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.