Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Tekstitiedostosta lukeminen

mavijo [07.06.2008 19:47:28]

#

Sivuillani on uutisaiheita tallennettuina tekstitiedostoihin ja etusivun reunapaneeliin on tarkoitus saada esim. 2 riviä näkyviin parista eri uutisaiheesta, ja jos kävijä haluaa lukea jostakin aiheesta enemmän, hän voi klikata koko uutisen näkyviin.
Siis:

Uutinen1: plaa plaa plaa
plaa, plaa plaa plaa pla
plaa plaa plaa...
Lue lisää

Uutinen2: plaa plaa plaa
plaa plaa, plaa plaa pla
plaa...
Lue lisää

Haluan siis tulostaa pari riviä, ja esim. 25 markkiä riville, jonka jälkeen rivinvaihto (oikea paneeli on melko kapea, enkä halua pitkän rimpsun tekstiä leventävän sitä.

Tähän mennessä olen onnistunut tulostamaan vain koko tiedoton, tai koko tiedoston merkki kerrallaan, jolloin mahdollisen html-muotoilumerkinnätkin tulevat näkyviin.

Tällaisesta tuli nyt apua:
echo substr($contents, 0, 240);
mutta tuokin pätkäisee sanan keskeltä, mikä näyttää tyhmältä. Onko sellaista mikä lopettaisi tietyn matkan päässä välimerkkiin?

ajv [07.06.2008 21:28:06]

#

Tapoja on yhtä paljon kun tekijöitäkin. Tässä yksi, joka näyttää 9 ensimmäistä sanaa.

<?php
$data = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean tristique nulla quis metus. Nullam leo. Quisque lectus quam, vestibulum sit amet, elementum sit amet, dictum non, felis. Nunc dictum. Nunc pretium. Praesent et tortor. Cras tristique. Nunc tincidunt suscipit nulla. Fusce eget pede quis enim hendrerit laoreet. Etiam tincidunt.';

// hajoitetaan merkkijono välilyöntien kohdalta taulukkoon
$words = explode(' ', $data, 10);
// taulukon viimeinen alkio sisältää sanasta 10 eteenpäin loput tekstit
// ==> otetaan se pois
unset($words[9]);
// tulostetaan taulukko lisäämällä sanojen väliin välilyönnit
echo implode(' ', $words), '...', ' <a href="#">Lue lisää</a>';
?>

Ja tämä tulostaa:

lainaus:

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean... Lue lisää

Lebe80 [08.06.2008 18:18:30]

#

tai molempien yhdistelmä, eli tarkistetaan ensiksi onko teksti yli "250" merkkiä (tms.) ja jos on, niin etsitään ensimmäinen sanan loppu, esim. 230 merkistä eteenpäin. Jos sana loppuu vasta esim. yli 260:n merkin jälkeen, niin tällöin karusti katkaistaan sana keskeltä "250":n merkin kohdalta, muussa tapauksessa sanan lopusta.

Vastaus

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

Tietoa sivustosta