Knebba Skrevet 29. mars 2006 Del 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. Lenke til kommentar
Magnus Holm Skrevet 29. mars 2006 Del 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 Lenke til kommentar
CruellaDeVille Skrevet 29. mars 2006 Del 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. Lenke til kommentar
CruellaDeVille Skrevet 29. mars 2006 Del 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"; Lenke til kommentar
Knebba Skrevet 29. mars 2006 Forfatter Del 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 Lenke til kommentar
Magnus Holm Skrevet 30. mars 2006 Del 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"; } Lenke til kommentar
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å