Tarkoitus olisi liittää sivuille sanastoa, joka koostuisi .htm- ja/tai .txt-tiedostoista ja niitä olisi useammassa alihakemistossa. Sivuille pitäisi tulostua tiedoston nimi otsikkona (ja aakkosjärjestyksessä) ja itse teksti. Olen onnistunut saamaan kaikki tiedostot tulostumaan, mutta ne on kaikki yhdessä pötkössä ja ilman niitä kaivattuja otsikoita. Koodin muokkaaminen on tuottanut lähinnä erroria kehiin, joten pakko kysyä viisaammilta ;-)
txt-tiedostojen kanssa tule hieman ongelmia ulkoasun kohdalla, joten ehkä htm olisi parempi kun muotoilun voi tehdä itse tiedostossa haluamakseen. Vai kuinka?
Miltä näyttää koodin kohta, joka tulostaa yhden tiedoston sivulle?
Tällä sain tulostettua kaikki tiedostot yhtenä pötkönä.
<?php $nimi = "tiedosto.txt"; $tiedot = file_get_contents($nimi); echo "<h4>$nimi</h4>"; echo "<p>$tiedot</p>"; ?>
Tällä saa tietyn tiedoston tulostumaan. Vielä pitäisi saada "tiedosto.txt" tulostumaan "Tiedosto" (kaikki tiedostot ilman päätettä ja isolla alkukirjaimella) ja teksti tulostumaan kappaleittain. <pre> tagilla ei tule toivottua lopputulosta.
<?php function tulosta($tiedosto) { $data = htmlspecialchars(trim(file_get_contents($tiedosto))); $data = str_replace(array("\r\n", "\r"), "\n", $data); $data = str_replace("\n\n", "</p><p>", $data); $data = str_replace("\n", "<br />", $data); $otsikko = htmlspecialchars(ucfirst(basename($tiedosto, '.txt'))); echo "<h4>", $otsikko, "</h4>\n"; echo "<p>", $data, "</p>\n"; } tulosta("koe.txt");
Tässä on kokeilu, jossa on monta kappaletta. Kappaleen sisällä voi olla rivityksiä, jos se on jostain syystä tarpeen.
<h4>Koe</h4> <p>Tässä on kokeilu, jossa on monta kappaletta.</p><p>Kappaleen sisällä voi olla rivityksiä,<br />jos se on jostain syystä tarpeen.</p>
Tuolla sain tulosumaan juuri niin kuin pitikin.
Vielä pitäisi saada tulostettua useammasta tiedostosta.
Onneksesi minulla sattuu olemaan tallessa valmis rekursiivinen glob-funktio.
<?php function glob_rek($hakemisto) { // UNIXien piilotiedostot (.*) eivät näy jälkimmäisellä haulla. $x = glob("$hakemisto/.*"); $y = glob("$hakemisto/*"); // Tyhjät hakemistot palauttavat falsen eivätkä taulukkoa. if (!$x) $x = array(); if (!$y) $y = array(); // Tutkitaan tulokset. foreach (array_merge($x, $y) as $polku) { $nimi = basename($polku); if ($nimi == '.' || $nimi == '..') continue; if (is_dir($polku)) { glob_rek($polku); } else { // Tulostus tänne. ($polku) // Voit tarkistaa vielä tiedostopäätteen. echo "$polku\n"; } } } // Käydään läpi hakemisto "tiedot". glob_rek("tiedot");
(Edit: nimiä selvennetty.)
Öh.. en saanut tolla mitään... Joutunee vääntää rautalangasta :(
Jaahas... ottaa pään käteen ja miettii vähän... toimiihan se :)
Ei ihan kuitenkaan sitä mitä etsin, mutta tosta sen kaiketi saan väännettyä?
Aihe on jo aika vanha, joten et voi enää vastata siihen.