Pitkien merkkijonojen katkaiseminen

Haen php:lla tietokannasta tekstiä ja tulostan sen sivuille. Joskus tekstissä on kuitenkin pitkiä linkkejä, jotka kokonaisuudessaan tulostettuna menevät yli alueen, joka tekstille on varattu. Miten pystyisin tekemään tarkistuksen, jolla varmistaisin että jos merkkijono on yli x merkkiä pitkä, tulostetaan merkkijonosta ensimmäiset x merkkiä ja laitetaan kolme pistettä perään?

Php.net:stä löytyi valmiina koodin pätkä, jolla tunnistetaan tekstistä linkit. Eli siis:
Jos tekstistä löytyy kohta http://www.suomi24.fi niin preg_replace:lla se muutetaan muotoon
http://www.suomi24.fi

Joskus nuo linkit ovat kuitenkin liian pitkiä tulostettavaksi. Ja nyt siis pitäisi saada tarkistettua, ettei ja -tagien välissä oleva teksti ole liian pitkä. Osaako kukaan auttaa?
2199
Äänestä

Muut lukivat myös

Vastaukset 2

Vanhimmat

$string = "pitkämerkkijonotässänäin";

if(strlen($string)>10) {
$string = substr($string,0,10) . "...";
}


Tuon pitäisi olla aika toimiva, mutta en tarkistanut..

strlen-funktio palauttaa jonon pituuden, ja jos se on yli 10, jono muotoillaan uusiksi.

substr palauttaa sille annetusta jonosta 10 merkkiä alkaen jonon alusta (0).

Äänestä
  • Sori ensimmäisen viestin sekavuus. Olin jostain syystä ajatuksissani kirjoittanut koko ajan merkkijonoista, vaikka kyseessä on enemmänkin uutinen tai muu pitempi kirjoitus. Eli teksti, jossa on paljon sanoja, ja pitäisi tarkistaa ettei yksikään sana ole liian pitkä.

    Saan kyllä siis säännöllisillä lausekkeilla lyhennettyä jokaisen sanan määrätyn pituiseksi, mutta siinä pilkotaan linkkien osoitteet samalla ja se ei luonnollisesti ole tarkoitus. Eli pitäisi saada tarkitus, joka jättäisi href-atribuutin jälkeen tulevan tekstin huomiotta.

    Kiitos kuitenkin vastauksesta.

    Äänestä

Kommentoi aloitusta


T.Aukki kirjoitti:

Haen php:lla tietokannasta tekstiä ja tulostan sen sivuille. Joskus tekstissä on kuitenkin pitkiä linkkejä, jotka kokonaisuudessaan tulostettuna menevät yli alueen, joka tekstille on varattu. Miten pystyisin tekemään tarkistuksen, jolla varmistaisin että jos merkkijono on yli x merkkiä pitkä, tulostetaan merkkijonosta ensimmäiset x merkkiä ja laitetaan kolme pistettä perään?

Php.net:stä löytyi valmiina koodin pätkä, jolla tunnistetaan tekstistä linkit. Eli siis:
Jos tekstistä löytyy kohta http://www.suomi24.fi niin preg_replace:lla se muutetaan muotoon
http://www.suomi24.fi

Joskus nuo linkit ovat kuitenkin liian pitkiä tulostettavaksi. Ja nyt siis pitäisi saada tarkistettua, ettei ja -tagien välissä oleva teksti ole liian pitkä. Osaako kukaan auttaa?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu