pgdx Skrevet 29. mai 2005 Del Skrevet 29. mai 2005 (endret) Jeg har søkt php.net og en god del på google, men jeg finner ikke akkurat det jeg er ute etter... Må jeg i dette tilfellet bruke en foreach-loop? Og i så tilfellet, hvordan henter jeg ut det N-te ordet fra en fil? Endret 29. mai 2005 av drange_net Lenke til kommentar
Gilbert Skrevet 29. mai 2005 Del Skrevet 29. mai 2005 $ord = file('ordene.txt); ...putter alt i et array. Men det var kanskje ikke hva du trengte? Lenke til kommentar
pgdx Skrevet 29. mai 2005 Forfatter Del Skrevet 29. mai 2005 Nei, det der putter, om jeg ikke tar feil, alle linjene for seg i et array. Lenke til kommentar
Rasmus Skrevet 29. mai 2005 Del Skrevet 29. mai 2005 Hva skal du splitte på? mellomrom, linjeskift, tegn? fil.txt (her er ordene splittet med |) ord1|ord2|ord3|ord4 explode er funksjonen du leter etter. Her er et lite eksempel. <?php $str = file_get_contents("fil.txt"); $array=explode('|', $str); //skrive ut arrayet rekursivt echo "<pre>"; print_r($array); echo "</pre>"; ?> Når du ser arrayet skjønner du også hvordan du henter ut det n-te ordet. Siden arrayet begynner på nøkkel 0, vil det n-te elementet finnes i $array[$n-1]. For å iterere gjennom arrayet kan du bruke foreach. <?php foreach ($array as $key=>$value) { echo "Key: $key; Value: $value<br />\n"; } ?> Lenke til kommentar
pgdx Skrevet 29. mai 2005 Forfatter Del Skrevet 29. mai 2005 (endret) Ja, jeg satt nettopp og brukte explode. Men må også ta strip_tags. Jeg vil heller ikke ha med saker som står mellom <?php og ?>. Det er nemlig en PHP-fil jeg skal gjøre om. Jeg vil også bruke linjeskift som delimiter. Jeg får det ikke til å fungere med "\n". Er det ikke mulig å explode en som allerede er explodet? Jeg prøvde å fjerne først mellomrom, deretter linjeskift. 1 <?php 2 $str = file_get_contents("kontakt.php"); 3 $tagsremoved = strip_tags($str); 4 $whitespaceremoved = explode("\n",$tagsremoved); 5 $array = explode(" ",$whitespaceremoved); 6 echo "\n" . $array[0] . "\n"; 7 echo "\n" . $whitespaceremoved[0] . "\n"; 8 9 ?> echo $array[0] gir meg kun "Array", mens den som jeg explodet først jeg mening. Endret 29. mai 2005 av drange_net Lenke til kommentar
pgdx Skrevet 29. mai 2005 Forfatter Del Skrevet 29. mai 2005 Jeg skjønner nå hvorfor det ikke går. Er det mulig å bruke flere delimiterer? Lenke til kommentar
kakkle Skrevet 29. mai 2005 Del Skrevet 29. mai 2005 (endret) Hvis du skal ha alle ordene i en fil i et array, bare skilt av mellomrom, f.eks, så tror jeg at jeg ville brukt implode etterfulgt av str_word_count, som telle antall ord i en variabel, og om ønskelig returnerer et array med alle ordene. eks: $filarray = file("ord.txt"); $fil = implode("", $filarray); $ord = str_word_count($fil, 1); // returnerer alle ord til srray $ord, med 0 - ant ord som key $ord = str_word_count($fil, 2); // returnerer alle ord til array $ord med posisjon i variabelen som key Se evt godt ekempel på php.net. Link over. Endret 29. mai 2005 av kakkle Lenke til kommentar
Rasmus Skrevet 29. mai 2005 Del Skrevet 29. mai 2005 Linjeskift kan variere fra forskjellige operativsystem. Unix: \n Windows: \r\n Mac: \r Hva skal du gjøre med PHP koden egentlig? Lenke til kommentar
pgdx Skrevet 29. mai 2005 Forfatter Del Skrevet 29. mai 2005 (endret) Jeg har laget en søkeside som søker igjennom alle filene som ligger i innholdsmappen min på websiden. Jeg er nesten ferdig nå. Kildekoden med skikkelig highlighting ligger på pastebin.com. <h2>Søkeresultat?</h2> <?php $search = $_POST['search']; // Henter søkeord fra form $results = 0; // Må bare sette en variabel så vi har den til senere bruk if ($handle = opendir('innhold')) { // Åpner innholdsmappen while (false != ($file = readdir($handle))) { if ($file != "." && $file != ".." && $file != "search.php" && $file != "404.php") { $str = file_get_contents("innhold/$file"); $tagsremoved = strip_tags($str); $keys = explode(" ",$tagsremoved); if (in_array($search, $keys)) { $results ++; echo "\n<p>«$search» finnes i <a href='$file'>$file</a></p>"; } } } closedir($handle); } if ($results < 1) { echo "<p>Søket resulterte dessverre ikke i noen treff. Du kan prøve andre søkeord, eller prøve et mer generelt søk.</p>"; } elseif ($results == 1) { echo "<p>Vi fant $results side som passet ditt søk</p>"; } else { echo "<p>Vi fant $results sider som passet ditt søk</p>"; } ?> Problemet med koden nå er følgende: Søket er case sensitive Ord blir hentet inn med tegn som ".", "," m.m., det vil si at hvis du skal få treff på siste ordet i en setning, må man søke med punktumet på slutten av ordet. Linkene funker ikke ennå, jeg må fjerne filendelsen Endret 29. mai 2005 av drange_net 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å