Gå til innhold

Gjøre alle ord i en fil om til variabler i array


Anbefalte innlegg

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 av drange_net
Lenke til kommentar
Videoannonse
Annonse

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

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 av drange_net
Lenke til kommentar

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 av kakkle
Lenke til kommentar

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 av drange_net
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å
×
×
  • Opprett ny...