Bakke Skrevet 1. januar 2008 Del Skrevet 1. januar 2008 (endret) Har skrevet et lite script som skal kunne sammenligne ord. Det vil si, om du stokker om på bokstavene i et ord skal scriptet kunne finne ut hvilket ord det er. Idèen er at scriptet sorterer bokstavene i ordet etter alfabetisk rekkefølge, trekker et og et ord ut fra en ordliste og gjør det samme, før den sammenligner ordene. Om de matcher vil scriptet printe ordet det trakk ut av ordlisten. Her er scriptet mitt: <?php if(!isset($_POST['submit'])) { echo " <html> <body> <form action=\"\" method=\"post\"> <input type=\"text\" name=\"text\" value=\"text\"> <input type=\"submit\" name=\"submit\" value=\"submit\"> </form> </body> </html>"; } else { $wordlist = fopen("wordlist.txt", "r") or die("Could not open wordlist!"); $text = $_POST['text'] or die("Please enter a word!"); function str_sort($value) { $value_array = str_split($value); sort($value_array); foreach($value_array as $value) { $output .= $value; } return $output; } $text_sorted = str_sort($text); while(!feof($wordlist)) { $word = fgets($wordlist); $word_sorted = str_sort($word); if($word_sorted == $text_sorted) { echo "<br />".$word; break; } } fclose($wordlist); } ?> Av en eller annen merkelig grunn fungerer dette kun med tall. Selv om ordene blir like etter at bokstavene er sortert, som jeg har sjekket, mener scriptet noe annet. Noen som finner feilen? Endret 2. januar 2008 av Bakke Lenke til kommentar
Jonas Skrevet 1. januar 2008 Del Skrevet 1. januar 2008 (endret) Uten å ha sett nøye på koden vil jeg gjette at det kommer av store/små bokstaver, funksjonen som sammenligner er vel case-sensitive. (For øvrig mye lettere å se om du indeterer koden når du skriver) Edit: Se på strtolower(). Endret 1. januar 2008 av Jonas Lenke til kommentar
kakkle Skrevet 1. januar 2008 Del Skrevet 1. januar 2008 (endret) Evt, prøv å trimme ordene som du henter fra filen: Og gjør det case insensitivt, som Jonas sier. Dette gjør du enklest i funksjonen: return strtolower(trim($output)); EDIT: Er vel like greit å både trimme og konvertere til små bokstaver i funksjonen, kanskje ? Forresten, synes det er merkelig med en funksjon inni en else blokk, da... Endret 2. januar 2008 av kakkle Lenke til kommentar
itsmebth Skrevet 2. januar 2008 Del Skrevet 2. januar 2008 implode(sort(str_split($str))); Er dette tilfeldigvis til http://www.hackthissite.org/missions/prog/1/? Lenke til kommentar
Bakke Skrevet 2. januar 2008 Forfatter Del Skrevet 2. januar 2008 Fungerte fint når jeg slengte på strtolower() og trim(). Burde jo ha tenkt på det med store og små bokstaver selv. Men takk Er dette tilfeldigvis til http://www.hackthissite.org/missions/prog/1/? Kjekt å prøve seg på dem, om du ikke kommer på noe bedre å lage. Der du fikk idèen til IRC-boten? 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å