Gå til innhold

sjekke om en fil inneholder et ord


Anbefalte innlegg

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
Videoannonse
Annonse
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
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
<?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
*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

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...