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