Avatar billede hoyerby Nybegynder
06. november 2001 - 20:34 Der er 6 kommentarer og
1 løsning

Tilfældig orden

Hej !
Jeg har et lille stykke af en kode, som ser således ud:

<?php
$filnavn1 = \"saetninger.txt\";
$fp = fopen( $filnavn1, \"r\" ) or die(\"filen eksisterer ikke\");
$i = 0;
while (! feof( $fp ) ) {
  $linie[] = fgets($fp, 1024);
  $i = $i + 1;
  }
    $x = rand(1,$i-1 ) ;
   
  echo (\"$linie[$x]<br>\");
  ?>

Her bliver der hentet en tilfældig sætning fra et tekstdokument, som bliver skrevet ud.

Jeg skal nu også have ordene i den pågældende sætning skrevet ud i tilfældig orden; f.eks: \"lille peter gik en tur\" kan f.eks komme ud på skærmen som: \"tur peter en gik lille\"...

Jeg er langt fra hård til php, så er der nogen der kan hjælpe ???

:-))
Avatar billede myplacedk Nybegynder
06. november 2001 - 21:08 #1
Prøv dette:

<?php
srand ((float) microtime() * 10000000);

$filnavn1 = \"saetninger.txt\";
$linjer = file($filnavn1);
$linjenummer = array_rand ($linjer);

$linje = $linjer[$linjenummer];

$ord = explode(\' \', $linje);
shuffle($ord);
$nylinje = implode(\' \', $ord);

echo (\"$nylinie<br>\");
?>

/Niels Andersen
Avatar billede myplacedk Nybegynder
06. november 2001 - 21:10 #2
<?php
srand ((float) microtime() * 10000000); // seed random, dvs. gør tilfældighedsfunktionerne tilfældige. ;-)

$filnavn1 = \"saetninger.txt\";
$linjer = file($filnavn1); // Tager indholdet fra filen og laver til et array, hvor hvert element er en linje. Ligesom du gør ovenfor med 6 linjers kode
$linjenummer = array_rand ($linjer); // Finder nummeret på en tilfældig linje

$linje = $linjer[$linjenummer]; // Henter denne tilfældige linje frem

$ord = explode(\' \', $linje); // deler linjen op i ord
shuffle($ord); // mixer ordene
$nylinje = implode(\' \', $ord); // sætter ordene sammen igen

echo (\"$nylinie<br>\");
?>
Avatar billede hoyerby Nybegynder
06. november 2001 - 21:29 #3
Tak for dit svar.
Jeg har nu prøvet, at paste koden ind, men feltet på skærmen, hvor linjen med de mixede ord skulle have været, er tom; hvad gør jeg forkert ? (som sagt er jeg ganske ny på dette område) :-)


<?php
$filnavn1 = \"saetninger.txt\";
$fp = fopen( $filnavn1, \"r\" ) or die(\"Filen eksisterer ikke\");

srand ((float) microtime() * 10000000); // seed random, dvs. gør tilfældighedsfunktionerne tilfældige. ;-)

$linjer = file($filnavn1); // Tager indholdet fra filen og laver til et array, hvor hvert element er en linje. Ligesom du gør ovenfor med 6 linjers kode
$linjenummer = array_rand ($linjer); // Finder nummeret på en tilfældig linje

$linje = $linjer[$linjenummer]; // Henter denne tilfældige linje frem

$ord = explode(\' \', $linje); // deler linjen op i ord
shuffle($ord); // mixer ordene
$nylinje = implode(\' \', $ord); // sætter ordene sammen igen

echo (\"$nylinie<br>\");
?>
Avatar billede myplacedk Nybegynder
06. november 2001 - 21:42 #4
Prøv at rette den sidste linje til:
echo (\"[$nylinie]<br>\");

Kommer [] så frem?
Avatar billede hoyerby Nybegynder
06. november 2001 - 21:44 #5
Ja....??
Avatar billede myplacedk Nybegynder
06. november 2001 - 21:53 #6
Hvad giver dette?

<?php
$filnavn1 = \"saetninger.txt\";
$fp = fopen( $filnavn1, \"r\" ) or die(\"Filen eksisterer ikke\");

srand ((float) microtime() * 10000000); // seed random, dvs. gør tilfældighedsfunktionerne tilfældige. ;-)

$linjer = file($filnavn1); // Tager indholdet fra filen og laver til et array, hvor hvert element er en linje. Ligesom du gør ovenfor med 6 linjers kode
$linjenummer = array_rand ($linjer); // Finder nummeret på en tilfældig linje

$linje = $linjer[$linjenummer]; // Henter denne tilfældige linje frem

echo \"Sætning før: $linje<br>\\n\";

$ord = explode(\' \', $linje); // deler linjen op i ord
shuffle($ord); // mixer ordene
$nylinje = implode(\' \', $ord); // sætter ordene sammen igen

echo \"Sætning efter: $nylinje<br>\\n\";
?>
Avatar billede hoyerby Nybegynder
06. november 2001 - 21:59 #7
Det giver en \"sætning før\" & sætning efter\"  (med det rette indhold)....Og, efter jeg lige fjerner din ene echo samt retter \"sætning efter\" til....er det bare FJONG !!

Tusinde tak !!!
:-)))))))))  (kæmpe smil) !!

Lene
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester