Hei,
Kysymys on yksinkertainen, mutta kuitenkin liian monimutkainen eli miten kannattaisi tehdä esim. etusivulla tavallisesti käytettävä uutisen lyhennelmä, josta on linkki varsinaiseen uutiseen?
Jos haluan vaikkapa 200 merkkiä pitkän tekstin ja loppuun "lue lisää!" niin tämähän onnistuu käyttämällä substr. Ongelmana on, että uutiset sisältävät -tageja, jotka sitten voivat osua "leikkauskohtaan" hajottaen sivun. Miten tämä onnistuu tehdä siististi ilman, että joutuisin poistamaan kaikki tagit ja mielellään vielä niin, että sanatkaan eivät katkeile? Lyhennelmän viimeinen merkki pitäisi siis olla kirjain ja lopuksi "lue lisää".
Kysymys on yksinkertainen, mutta kuitenkin liian monimutkainen eli miten kannattaisi tehdä esim. etusivulla tavallisesti käytettävä uutisen lyhennelmä, josta on linkki varsinaiseen uutiseen?
Jos haluan vaikkapa 200 merkkiä pitkän tekstin ja loppuun "lue lisää!" niin tämähän onnistuu käyttämällä substr. Ongelmana on, että uutiset sisältävät -tageja, jotka sitten voivat osua "leikkauskohtaan" hajottaen sivun. Miten tämä onnistuu tehdä siististi ilman, että joutuisin poistamaan kaikki tagit ja mielellään vielä niin, että sanatkaan eivät katkeile? Lyhennelmän viimeinen merkki pitäisi siis olla kirjain ja lopuksi "lue lisää".
Vastaukset 5
Vanhimmat
Muotoilukoodeissa ei taida esiintyä välilyöntejä? Haet kohdasta 200. merkki alkuun päin ensimmäisen välilyönnin ja katkaiset siitä?
Laitat vaikka sen lyhennelmän sisältävälle elementille (taulusoli/div tms) sopivan koon ja määrittelet css:llä siihen mahtuman tekstin leikkautumaan pois.
overflow: hidden;
http://www.w3.org/TR/CSS2/visufx.html#overflow
Niin no tuo siis on kans aika "dirty" -ratkaisu. Sanat voivat jäädä kesken yms mutta ei riko mitään sivua kuitenkaan.
strrpos:n avulla etsit ensimmäisen välilyönnin 200:n merkin jälkeen, leikkaat ja lisäät 'lue lisää...'
sen jälkeen htmlspecialchars(), niin teksti ei hajota sivua
Niin eihän sulla se teksti saa sisältää mitään tageja. Nehän tulee generoida vasta tulostusvaiheessa. Saatat nimitäin haluta muutella tageja tarpeen mukaan. Toinen vaihtoehto on stripata tagit pois tulostustekstistä. Haet ensin vaikka 300 merkkiä halutusta tekstistä, jonka jälkeen hurautat strip_tags() funktion läpi tuon tekstin. Lopuksi lyhennät vielä tarpeen mukaan tuota tekstiä.