Knebba Skrevet 29. mars 2006 Skrevet 29. mars 2006 Jeg prøver å kjøre en sjekk på om et ord fra et input allerede finnes i en fil: $emnefil = file('emner.txt'); if(in_array(strtolower($emnepost), $emnefil)){ echo "Emnenavnet eksisterer allerede!"; die();} men den sier ikke i fra i det hele tatt, og alt ligger på forskjellige linjer. kjører strtolower på input slik at alt har små bokstaver i filen.
Magnus Holm Skrevet 29. mars 2006 Skrevet 29. mars 2006 (endret) Hva med noe sånt: $emnefil = strtolower(file_get_contens('emner.txt')); $emnepost = strtolower("Finn meg"); $pos = strpos($emnefil, $emnepost); if ($pos === True) { echo "\"$emnepost\" var i fila"; } Endret 29. mars 2006 av Judofyr
CruellaDeVille Skrevet 29. mars 2006 Skrevet 29. mars 2006 Jeg prøver å kjøre en sjekk på om et ord fra et input allerede finnes i en fil: $emnefil = file('emner.txt'); if(in_array(strtolower($emnepost), $emnefil)){ echo "Emnenavnet eksisterer allerede!"; die();} men den sier ikke i fra i det hele tatt, og alt ligger på forskjellige linjer. kjører strtolower på input slik at alt har små bokstaver i filen. 5834756[/snapback] Det du får ut av funksjonen file() er en array av linjer i filen din. For å kunne bruke in_array med ordentlig resultat må arrayindeksen din inneholde nøyaktig det samme streng som du sender inn og kun det. Det funker ikke selv om "Siv" står på egen linje med in_array, så jeg ville gått for preg_match Jeg forskøkte meg med en preg_match: <?php $file = file('gjestebok.txt'); foreach($file as $lines){ if(preg_match("/Siv/", $lines)){ echo("Siv finnes i teksten"); break; } } echo "Dette blir skrevet ut når en bruker break istedet for die() eller return"; ?> og det funket. Jeg får ut at Siv er funnet og avbryter skriptet med break (istedet for die og return) Det du kan gjøre er å sjekke om emnenavn finnes og så gjøre handling deretter.
CruellaDeVille Skrevet 29. mars 2006 Skrevet 29. mars 2006 Hva med noe sånt: $emnefil = strtolower(file_get_contens('emner.txt')); $emnepost = strtolower("Finn meg"); $pos = strpos($emnefil, $emnepost); if ($pos === True) { echo "\"$emnepost\" var i fila"; } 5834934[/snapback] Denne funksjonen kan brukes, bare ikke helt på den måten som er vist her. strpos returnerer en int, ikke en boolean. Du kan skrive <?php $file = file_get_contents('gjestebok.txt'); if(strpos($file, "Siv") >=0) echo "Funnet"; ?> Det vil si at hvis startposisjon til streng "Siv" er fra 0 og oppover inneholder teksten strengen. Du kan også bruke stristr(), som er caseInsensitivt søk etter en streng i en annen streng. eks: if(stristr($file, "jeg gå barbeint i gresset om sommeren")) echo "Funnet";
Knebba Skrevet 29. mars 2006 Forfatter Skrevet 29. mars 2006 <?php $file = file('gjestebok.txt'); foreach($file as $lines){ if(preg_match("/Siv/", $lines)){ echo("Siv finnes i teksten"); break; } } echo "Dette blir skrevet ut når en bruker break istedet for die() eller return"; ?> Denne funket flott =) takk skal du ha bruker det til et lite forum på flatfiler... flipper sikkert ut en link når det er ferdig
Magnus Holm Skrevet 30. mars 2006 Skrevet 30. mars 2006 *snip* 5834934[/snapback] Denne funksjonen kan brukes, bare ikke helt på den måten som er vist her. strpos returnerer en int, ikke en boolean. 5835698[/snapback] Det stemmer, ja. Men jeg tror det hadde gått hvis jeg hadde skrevet det litt om: $emnefil = strtolower(file_get_contens('emner.txt')); $emnepost = strtolower("Finn meg"); $pos = strpos($emnefil, $emnepost); if ($pos !== False) { echo "\"$emnepost\" var i fila"; }
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå