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?
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ää
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.