Onnistuuko tätä koodia muokkaamalla toteuttamaan tuon, että tietyllä sivulla näytetään artikkelista vain osa tekstistä, ja alapuolella on buttoni "Lue lisää" tms.
<?php $viestit = file("/var/www/virtual/**********.arkku.net/htdocs/$vv,$kk.txt"); //käännetään taulukko, jolloin uusimmat viestit tulevat ylimmiksi $viestit = array_reverse($viestit); //viestien määrä on suoraan taulukon rivien määrä $viestimaara = count($viestit); //käydään jokainen viesti läpi for ($i = 0; $i < $viestimaara; $i++) { //$viestit[$i] on merkkijono, joka sisältää viestin $i tiedot //pystyviivoilla erotettuna; jaetaan viestit $tiedot-taulukkoon $fls = explode("|", $viestit[$i], 5); //haetaan tietokannan tiedot muuttujiin $ank = $fls[0]; $otsikko = $fls[1]; $pvm = $fls[2]; $aika = $fls[3]; $elm3 = $fls[4]; //tulostetaan päivitys echo "";
Pitäisikö sen ohjata uudelle sivulle jossa on koko artikkeli vai aueta siihen alle?
Tämän pitäisi lyhentää yli 100 merkkiset tekstit ja lisätä linkki loppuun (en kokeillut)
preg_replace("/^(.{100}).+$/", "\\1...<a href=\"luelisää.php\">Lue lisää</a>", $viesti);
Helpompaa olisi käyttää substr-funktiota.
substr($merkkijono, 0, 100);
Kannattaa huomioida, että kesken sanan katkaistu teksti näyttää varsinkin asiapitoisessa sisällössä melko hölmöltä. Itse tulostaisin tekstin lauseittain, tai sanoittain:
// Pätkitään teksti sanoiksi $viesti = explode(' ', $elm3); // Viestissä on yli 10 sanaa, ei näytetä kaikkia.. if (count($viesti) > 10) { // Tulostetaan luupilla 10 ensimmäistä sanaa for ($sana = 0; $sana < 10; $sana++) echo $viesti[$sana] . ' '; // Tulostetaan loppuun linkki echo '... <a hred="#">(Lue lisää)</a>'; } else { // Viestissä on alle 10 sanaa, näytetään kokonaan echo $elm3; }
Järkevintähän on siis tutkia, kuinka pitkä teksti on ja pätkiä sen mukaan, jos se edes on tarpeellista.
Eli ensiksi katsoa seuraava välimerkki tekstin kohdasta "x" eteenpäin. Jos seuraava välimerkki on liian kaukana, pätkäistään teksti kohdasta "x", eli todennäköisesti jonkin sanan keskeltä.
Tällöin useinmiten päästään parhaaseen lopputulokseen, ja jolloin teksti pätkästään vasta sanan jälkeen, ja jos teksti jostain kumman syystä pitääkin sisällään aivan liian pitkän yhtenäisen tekstin, esim. www-osoitteen, niin kyseinen "sana" pätkäistään keskeltä.
Tietenkin tuo kannattaa tehdä omaksi funktioksi, jossa yhtenä parametrinä on halutun näytettävän tekstin pituus (mikä esimerkissä olisi juurikin tuo kohta "x").
Aihe on jo aika vanha, joten et voi enää vastata siihen.