Avatar billede jonas82 Nybegynder
07. januar 2005 - 23:05 Der er 10 kommentarer og
2 løsninger

Finde indhold i fil, og putte det i variabler

Jeg læser noget tekst fra en fil ind i variablen $tekst.

Her er et eksempel på hvad $tekst kunne indeholde:

]=new Array("1","2","3","4","5","6","7","8","9","10", skrammel,skrammel,skrammel...);
skrammelskrammelskrammel...
]=new Array("1","2","3","4","5","6","7","8","9","10", skrammel,skrammel,skrammel...);
skrammelskrammelskrammel...
]=new Array("1","2","3","4","5","6","7","8","9","10", skrammel,skrammel,skrammel...);
(...)

Tallene 1-10 angiver noget data som jeg skal have hevet ud og lagt i hver sin variabel.
'Skrammel' angiver noget der står i filen, men som jeg ikke skal bruge til noget.
Jeg skal have lavet et eller andet som looper igennem indholdet af filen, så længe der står noget på ovenstående form, og lægger indholdet af "1", "2", "3" ind i $1, $2, $3.
Avatar billede moocher Nybegynder
08. januar 2005 - 00:30 #1
Der står altså  ]=new Array(" i filen ? og med tallene 1-10 mener du så at på de pladser står der nogle dataer (de 10 første pladser)

]=new Array("skal bruges","skal bruges","skal bruges","skal bruges","skal bruges","6","7","8","9","skal bruges", "skal ikke bruges",...);
Avatar billede jonas82 Nybegynder
08. januar 2005 - 00:36 #2
Det er korrekt forstået.

]=new Array("skal bruges","skal bruges","skal bruges","skal bruges","skal bruges","6","7","8","9","skal bruges", "skal ikke bruges",...);

Inden den næste blok af samme type kommer, står der noget mere data som ikke skal bruges. Så man kan sige at hver blok starter med ]=new Array(.
Avatar billede moocher Nybegynder
08. januar 2005 - 01:42 #3
Kan maan få at vide hvor mange blokke der er ialt (antal ]=new Array)
Avatar billede jonas82 Nybegynder
08. januar 2005 - 01:49 #4
Antal blokke kan desværre variere(ca. mellem 0-200), så det skal selv kunne gennemlæse filen og finde alle blokkene.
Avatar billede moocher Nybegynder
08. januar 2005 - 02:03 #5
Så kan jeg desværre ikke hjælpe dig... Det eneste jeg kan er at give dig et hint.

Jeg ville have brugt dette

1)
// Vi kan søge efter tegnet og ignorere alt før startpunktet
$newstring = 'abcdef abcdef';
$pos = strpos($newstring, 'a', 1); // $pos = 7, ikke 0
?>


2)
$rest = substr("abcdef", 1, 3); // returnerer "bcd"

Jeg kigger på det imorgen med friske øjne
Avatar billede olebole Juniormester
08. januar 2005 - 11:52 #6
<ole>

En eller anden måde må der jo være til at afgøre, hvor mange filer, der skal hentes ... ellers kræver det en clairvoyance-funktion, der endnu ikke findes i PHP  :)
Dernæst kan du jo lave nogle regulære udtryk, der filtrerer data og henter det, du skal bruge - men det kræver, at man ved præcist, hvad der står i filerne

/mvh
</bole>
Avatar billede jonas82 Nybegynder
08. januar 2005 - 12:45 #7
Der er kun tale om én fil.

Man må vel på en eller aden måde kunne søge i filen, og finde ud af hvor mange gange "]=new Array" eksisterer.
Avatar billede jonas82 Nybegynder
08. januar 2005 - 23:02 #8
Jeg har fået det løst selv, ved at bøvle lidt rundt med strpos og substr.
Puha det tog lang tid, men jeg har sikkert lært noget ;-)

moocher hvis du lægger et svar får du lidt point for at lede mig på rette vej :-)
Avatar billede moocher Nybegynder
08. januar 2005 - 23:56 #9
<?php
$raw_data = ']=new Array("tekst1","tekst2","tekst3","tekst4","tekst5","tekst6","tekst7","tekst8","tekst9","tekst10"," skrammel,skrammel,skrammel...);skrammelskrammelskrammel...SLUT1]=new Array("1","2","3","4","5","6","7","8","9","10"," skrammel,skrammel,skrammel...);skrammelskrammelskrammel...SLUT2]=new Array("1","2","3","4","5","6","7","8","9","10"," skrammel,skrammel,skrammel...);(...)SLUT3';

$laengde = strlen($raw_data);
$pos[0] = strpos($raw_data, 'new', 0);
$j = 0;

for ($i = 1;$i < $laengde;$i = $i + 1) {
$j = $j + 1;
$pos[$i] = strpos($raw_data, ']=new', $pos[$i-1]+1);
if ($pos[$i] == 0) {$pos[$i] = $laengde;}
$data[$i-1] = substr($raw_data, $pos[$i-1], $pos[$i]-$pos[$i-1]);
echo $i.")<br>--".$pos[$i]."<br>--Og tager data fra ".$pos[$i-1]." til ".$pos[$i]."<br>--".$data[$i-1]."<br><br>";
if ($pos[$i] == $laengde) {$i = $laengde;}

}

echo "==========<br>";
echo ". Total stk ".$j." <br>";
echo "==========<br>";


for ($f = 0; $f < $j ; $f = $f + 1) {
$pos[0] = strpos($data[$f], '"', 0);
for ($i = 1; $i < 20 ; $i = $i + 1) {
  $pos[$i] = strpos($data[$f], '"', $pos[$i-1]+1);
}

for ($i = 0; $i < 20 ; $i = $i + 2) {
  $finale_data[$f][$i] = substr($data[$f],$pos[$i]+1,$pos[$i+1]-$pos[$i]-1);
  echo $finale_data[$f][$i]."<br>";
}
echo "<br><br>";
}

?>
Avatar billede moocher Nybegynder
08. januar 2005 - 23:56 #10
Test den
Avatar billede moocher Nybegynder
08. januar 2005 - 23:57 #11
Okay blev lige færdig med den selv ;)
Avatar billede jonas82 Nybegynder
11. januar 2005 - 22:56 #12
:-) Tak for indsatsen. Håber det er ok at vi deler.
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