Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: [PHP] Näyttää vain osan artikkelin tekstistä

combo [02.01.2011 11:30:56]

#

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 "";

Hennkka [02.01.2011 11:45:46]

#

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);

Macro [02.01.2011 12:06:57]

#

Helpompaa olisi käyttää substr-funktiota.

substr($merkkijono, 0, 100);

Mika9 [02.01.2011 13:40:18]

#

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;

}

Lebe80 [02.01.2011 15:41:06]

#

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").

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta