Gå til innhold

PHP skript som søker gjennom en fil etter info.


Anbefalte innlegg

Hei,

 

har noen et skript som søker gjennom en fil, etter opplysninger?

 

bla bla bla=454345
dfsg erer=453
gfdsgr=453
haha=543321
gdfs=34242

 

Det som den skal gjøre er at den leter etter "haha=" og henter frem nummeret\bokstavene, altså infoen som den "haha=" gir.

I dette er tallet 543321.

 

Hjelp?

Lenke til kommentar
Videoannonse
Annonse

<?php
$array_med_fil = file("filnavn.txt");
foreach($array as $value)
{
if($var = strstr($value, "haha="))
{
echo $var;
}

}

?>

Mulig det funker iallefall :p

preg_match er nok bedre,

preg_match("/^haha=/",$value)

 

edit:

 

Hvis du skal hente alle "variabler" kan du jo:

$array_med_fil = file("filnavn.txt");
foreach($array as $value)
{
$temp = explode("=",$value);
$array_med_variabler[$temp[0]] = $temp[1];
}
print_r($array_med_variabler);

Endret av Axentrix
Lenke til kommentar
<?php
$array_med_fil = file("filnavn.txt");
foreach($array as $value)
{
if($var = strstr($value, "haha="))
{
echo $var;
}

}

?>

Mulig det funker iallefall :p

preg_match er nok bedre,

preg_match("/^haha=/",$value)

5824485[/snapback]

$array_med_fil = file("filnavn.txt");
foreach($array as $value)

jeg skiftet "array_med_fil" til "array" så funket det perfekt :w00t:

men så vil jeg ikke ha med "haha=" i echo'en, og jeg er tom for ideer :(

 

/Intern*: Hvorfor er jeg slettet og blokket på msn? /Intern*

Endret av Noxe
Lenke til kommentar
En ting jeg lurer veldig på her er hvorfor i alle dager det brukes foreach når arrayen er numerisk indeksert og det meget lett kunne vært brukt en for-loop.

5826475[/snapback]

 

En foreach og en for-loop gjør det samme. Tror det er hipSomHap hva en gjør. Språk som tradisjonelt bruker for-loops for gjennomgang av indekserte arrays (som eks java (som eneste språk jeg kjenner)) forsøker å implementere foreach.

Lenke til kommentar
En ting jeg lurer veldig på her er hvorfor i alle dager det brukes foreach når arrayen er numerisk indeksert og det meget lett kunne vært brukt en for-loop.

5826475[/snapback]

 

Akuratt i dette tilfellet er jeg enig med deg, men noen ganger kan det vært greit å bruke foreach hvis den kan hope fra [3] til [8] og det ikke finnes noe data på 4,5,6,7 med foreach slipper du å tenke på slikt :)

Lenke til kommentar
En ting jeg lurer veldig på her er hvorfor i alle dager det brukes foreach når arrayen er numerisk indeksert og det meget lett kunne vært brukt en for-loop.

5826475[/snapback]

 

En foreach og en for-loop gjør det samme. Tror det er hipSomHap hva en gjør. Språk som tradisjonelt bruker for-loops for gjennomgang av indekserte arrays (som eks java (som eneste språk jeg kjenner)) forsøker å implementere foreach.

5826743[/snapback]

Foreach og for er overhode ikke det samme. Foreach er ikke engang en for-loop, det er i bunn og grunn while(list()=each()) og er et sted mellom 10 og 30 ganger treigere enn en tilsvarende for-loop (merk: varierer litt fra versjon til versjon). Har man en array sammenhengende numerisk indeks så bruker man ikke foreach, da bruker man for.

 

I C++ brukes forøvrig for_each til å kjøre en spesifikk funksjon for hvert element i en array. Arrayen må være indeksert sammenhengende fra 0 og oppover. Hvordan det er i Java aner jeg ikke, men jeg har en mistanke om at det er noe ala det.

 

En ting jeg lurer veldig på her er hvorfor i alle dager det brukes foreach når arrayen er numerisk indeksert og det meget lett kunne vært brukt en for-loop.

5826475[/snapback]

 

Akuratt i dette tilfellet er jeg enig med deg, men noen ganger kan det vært greit å bruke foreach hvis den kan hope fra [3] til [8] og det ikke finnes noe data på 4,5,6,7 med foreach slipper du å tenke på slikt :)

5826772[/snapback]

Joa, men her så er den sammenhengende numerisk indeksert i utgangspunktet og ingenting har blitt slettet. Da bruker man en for-loop.

 

Edit: Kan jo også nevnes at et raskere alternativ til foreach er følgende:

$key = array_keys($array);
$size = count($key);
for ($i=0; $i<$size; $i++)
{
  $array[$key[$i]] osv.
}

Endret av Ernie
Lenke til kommentar
  • 1 måned senere...
$array_med_fil = file("filnavn.txt");
foreach($array as $value)

jeg skiftet "array_med_fil" til "array" så funket det perfekt :w00t:

men så vil jeg ikke ha med "haha=" i echo'en, og jeg er tom for ideer :(

 

5826306[/snapback]

Noen som kan hjelpe meg her? Fikk aldri svar på den der.

Endret av Noxe
Lenke til kommentar

I PHP4 visstnok foreach raskere enn for, i PHP5 derimot er for raskere.

ref: http://byster.net/?page_id=36#a2

Forskjellen er større i PHP4 enn den er i PHP5

Hvor pålitelig testen er er en annen sak da vi ikke ser noe av koden hans.

Dersom noen har lyst til å lage en skikkelig testside, kan jeg ihvertfall stille med hosting på en PHP5-server.

 

Om dette stemmer eller ikke, vet jeg ikke, men jeg rimelig sikker på at det har fint lite å si med mindre du er helt avhengig av slik optimalisering.

Jeg bruker nesten alltid foreach på loop og Zend utiklerene bruker nesten alltid foreach på loop (jfr. artikler).

Jeg tror forskjellene er såpass små at det ikke er her du skal finne den store optmaliseringen.

"Nonetheless" er det greit å vite at det finnes fler enn én måte å itererere gjennom en array.

 

Og bare for info, for_each i C++ bruker iteratorer som er egendefinerte(user-types) wrappere rundt pekere, ikke tall. Iteratorene har opertatorene ++ og -- for å simulere tall, men det er ikke noe som sier at disse må være lineære. Av den grunn vet jeg ikke helt om det blir riktig å sammenligne disse to.

Java har ikke noen foreach-loop tror jeg, men du bruker en spesiell konstruksjon på for-loopen som oppretter iteratorer. (ikke særlig pent etter min mening)

Endret av Nazgul
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...