Miten saa sanan katkeamaan

Eli kirjoitan tekstiä CSS laatikkoon PHP scriptillä. CSS laatikko on määritelty tietyn levyiseksi, mutta jotkut sanat voivat olla pidempiä (mm. nettiosoitteita.) Miten saan sanan katkeamaan laatikon sisällä? Ei viitsisi PHP scriptiäkään muuttaa, koska ajattelin käyttää samaa scriptiä muihinkin tulostuksiin.
Ilmianna
Jaa

18 Vastausta



Ongelma on tavallinen, mutta siihen ei ole mitään hyvää yleistä ratkaisua, eikä CSS:llä ole oikeastaan mitään tekemistä asian kanssa. (Tämä voisi olla CSS:ään kuuluvaa, mutta ei nykyisin ole.)

Voit lisätä HTML-merkkaukseen -tägejä. Tällainen tägi tarkoittaa ”wanna break?” eli sallii kyseisessä kohdassa rivinvaihdon. (Historiallisesti nimi kyllä johtuu erittäin harhaanjohtavasti sanoista ”word break”. Tyypillisesti tägiä käytetään sanojen ulkopuolella. Eihän esimerkiksi URL ole sana. Sanojen sisälle sopii ­ joka sallii tavutuksen eli rivinvaihdon niin, että jos selain jakaa eri riveille, se lisää rivin loppuun tavuviivan.) Ks.

http://www.cs.tut.fi/~jkorpela/html/nobr.html#suggest

Jos pystyt tunnistamaan tekstistä URLin, voit ehkä lisätä :n esimerkiksi jokaisen vinoviivan (/) jälkeen paitsi useasta peräkkäisestä vinoviivasta vain viimeisen jälkeen, samoin kysymysmerkin (?) ja jokaisen et-merkin (&) jälkeen. Tämä yleensä riittää pilkkomaan URLin kohtuullisenmittaiksi osiksi. Jos et voi luotettavasti tunnistaa, missä kohdassa tekstissä on URL, anna olla.

Ja toisaalta tekstissä tietenkään ei pidä yleensä käyttää URLeja (paitsi harvoissa tapauksissa joissa tekstin asiasisältönä on URLeista puhuminen!). URLit on tarkoitettu ohjelmien, ei ihmisten luettaviksi. Siis älä näytä URLia vaan näytä linkkiteksti, jolloin URL on vain näkymättömästi linkin osoitteena.

Tietysti osa ratkaisua voi olla se, että poistat laatikon koolle asetetut, todennäköisesti liian ahtaat rajoitukset tai ainakin lievennät niitä. Aivan liian usein yritetään ahtaa kappalekaupalla tekstiä postimerkin kokoiseen tilaan ilman mitään järjellistä syytä.
Kommentoi
Ilmianna
Jaa
7 VASTAUSTA:
Joo, sinänsä UR:lit pitäisi kirjoittaa linkkeinä. Mutta tässä tapauksessa on tosiaan kyse sivusta johon kirjoitetaan PHP scriptillä sisältö joka taas ei ole minun tuottamaa. Eli on käyttäjästä kiinni kuinka pitkiä sanoja se sinne kirjoittaa. En tiedä sitten rasittaako sellainen scripti paljon serveriä joka laskisi joka sanan ja pätkäisisi sen sitten sopivasti.
Sinälläänhän asialla ei ole muuten merkitystä, mutta nuo ylipitkät rivithän rikkovat ulkoasun hyvin tehokkaasti ja esim. vieraskirjassa tai vastaavassa joku saattaa käyttää sitä hyväkseen.
Mielestäni esim. täällä on systeemi joka katkaisee ylipitkän sanan. Hmmm. taipanpa kokeilla:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Kommentoi
Ilmianna
Jaa
tageja kirjoitti:
Joo, sinänsä UR:lit pitäisi kirjoittaa linkkeinä. Mutta tässä tapauksessa on tosiaan kyse sivusta johon kirjoitetaan PHP scriptillä sisältö joka taas ei ole minun tuottamaa. Eli on käyttäjästä kiinni kuinka pitkiä sanoja se sinne kirjoittaa. En tiedä sitten rasittaako sellainen scripti paljon serveriä joka laskisi joka sanan ja pätkäisisi sen sitten sopivasti.
Sinälläänhän asialla ei ole muuten merkitystä, mutta nuo ylipitkät rivithän rikkovat ulkoasun hyvin tehokkaasti ja esim. vieraskirjassa tai vastaavassa joku saattaa käyttää sitä hyväkseen.
Mielestäni esim. täällä on systeemi joka katkaisee ylipitkän sanan. Hmmm. taipanpa kokeilla:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
sitten täällä :/
Kommentoi
Ilmianna
Jaa
tageja kirjoitti:
Joo, sinänsä UR:lit pitäisi kirjoittaa linkkeinä. Mutta tässä tapauksessa on tosiaan kyse sivusta johon kirjoitetaan PHP scriptillä sisältö joka taas ei ole minun tuottamaa. Eli on käyttäjästä kiinni kuinka pitkiä sanoja se sinne kirjoittaa. En tiedä sitten rasittaako sellainen scripti paljon serveriä joka laskisi joka sanan ja pätkäisisi sen sitten sopivasti.
Sinälläänhän asialla ei ole muuten merkitystä, mutta nuo ylipitkät rivithän rikkovat ulkoasun hyvin tehokkaasti ja esim. vieraskirjassa tai vastaavassa joku saattaa käyttää sitä hyväkseen.
Mielestäni esim. täällä on systeemi joka katkaisee ylipitkän sanan. Hmmm. taipanpa kokeilla:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Jos esimerkiksi vieraskirjaan voi kirjoittaa tekstiä niin, että urlit muuttuvat linkeiksi, niin se on suorastaan kutsu spämmääjille. Tai siis spämmääjät lähettävät urlikasojaan joka tapauksessa, ja moneen pahaa-aavistamattomaan vieraskirjaan sitten menee sadoittain pornosivustojen mainoksia tms.

Käyttäjiltä syötteenä tulevat urlit ovat siis paljon isompi ongelma kuin vain rivitysongelma. Rivitys voitaisiin hoitaa vaikka niin, että urlista http://www.example.com/pitkäpolku tehdään http://www.example.com/pi...lku itse tekstissä ja tästä tehdään linkki, jossa href-määrite sisältää lyhentämättömän urlin. Tällöin ei isoja ongelmia syntyisi rivityksessä.
Kommentoi
Ilmianna
Jaa
Yucca kirjoitti:
Jos esimerkiksi vieraskirjaan voi kirjoittaa tekstiä niin, että urlit muuttuvat linkeiksi, niin se on suorastaan kutsu spämmääjille. Tai siis spämmääjät lähettävät urlikasojaan joka tapauksessa, ja moneen pahaa-aavistamattomaan vieraskirjaan sitten menee sadoittain pornosivustojen mainoksia tms.

Käyttäjiltä syötteenä tulevat urlit ovat siis paljon isompi ongelma kuin vain rivitysongelma. Rivitys voitaisiin hoitaa vaikka niin, että urlista http://www.example.com/pitkäpolku tehdään http://www.example.com/pi...lku itse tekstissä ja tästä tehdään linkki, jossa href-määrite sisältää lyhentämättömän urlin. Tällöin ei isoja ongelmia syntyisi rivityksessä.
voisi olla paikallaan, katsotaan miten käy kerääkö tuo spammia kuinka paljon. Joka tapauksessa ajattelin laittaa sellaisen systeemin jossa pyydetään kirjoittamaan joku vaihtuva koodi ennenkuin viestiä tallennetaan, näin voi välttää ainakin automatisoidun spämmäämisen.
Ajattelin kuitenkin käyttää sanan katkaisuun PHP scriptiä joka poikkaisee sanan silloin kun se on liian pitkä, koska tosiaan sekin on ongelma jos joku laittaa vaikka huvikseen kaikki sanat pötköön tai jotain muuta nerokasta.
Sanan katkaisussakin on tietty se ongelma että kirjaimet ovat eri pituisia. Ehkä mittaan montako leveintä kirjaisinta tuohon tilaan mahtuu ja teen word cutterin sen perusteella. W ja M taitavat olla pisimmät kirjaisimet yleisimmissä fonteissa?
Kommentoi
Ilmianna
Jaa
Ethän nyt ihan tosissasi kehoita ihmisiä käyttämään selainkohtaisia, standardin vastaisia ja muutenkin jo vanhentuneita tekniikoita, kuten tämä wbr-elementti on? Se nyt on jo nähty minkälainen sotku siitä tulee, kun ihmiset eivät välitä standarsista tuon taivaallista ja koodaavat sivunsa toimimaan vain yhdessä tietyssä selaimessa. Laittavat vielä etusivulle typerän laatikon, jossa kehoittavat vaihtamaan selaimen "parempaan", koska ovat liian laiskoja tekemään asiat kerralla oikein.
Kommentoi
Ilmianna
Jaa
fidel1 kirjoitti:
Ethän nyt ihan tosissasi kehoita ihmisiä käyttämään selainkohtaisia, standardin vastaisia ja muutenkin jo vanhentuneita tekniikoita, kuten tämä wbr-elementti on? Se nyt on jo nähty minkälainen sotku siitä tulee, kun ihmiset eivät välitä standarsista tuon taivaallista ja koodaavat sivunsa toimimaan vain yhdessä tietyssä selaimessa. Laittavat vielä etusivulle typerän laatikon, jossa kehoittavat vaihtamaan selaimen "parempaan", koska ovat liian laiskoja tekemään asiat kerralla oikein.
Ihan tosissani. Onko sinulla jokin toimiva vaihtoehto? Minä tunnen vaihtoehdot ja tiedän, että ne eivät yleensä toimi ja aiheuttavat usein isoja ongelmia, kun taas toimii noin kaikissa selaimissa eikä aiheuta mitään harmia (siihen verrattuna, että yritettäisikään esittää rivinvaihtomahdollisuuksia). Ks.
http://www.cs.tut.fi/~jkorpela/html/nobr.html#suggest

Joten säästä saarnasi sopivampiin tilanteisiin.
Kommentoi
Ilmianna
Jaa
fidel1 kirjoitti:
Ethän nyt ihan tosissasi kehoita ihmisiä käyttämään selainkohtaisia, standardin vastaisia ja muutenkin jo vanhentuneita tekniikoita, kuten tämä wbr-elementti on? Se nyt on jo nähty minkälainen sotku siitä tulee, kun ihmiset eivät välitä standarsista tuon taivaallista ja koodaavat sivunsa toimimaan vain yhdessä tietyssä selaimessa. Laittavat vielä etusivulle typerän laatikon, jossa kehoittavat vaihtamaan selaimen "parempaan", koska ovat liian laiskoja tekemään asiat kerralla oikein.
Heh, joku julisti vuonna 2008 wbr-tagin vanhentuneeksi. No vuonna 2013 se on edelleen HTML5-standardissa. Repikää siitä.
Kommentoi
Ilmianna
Jaa
+Lisää kommentti
Taikasana on ”word-wrap: break-word"!
Kommentoi
Ilmianna
Jaa
7 VASTAUSTA:
Tässä vielä aiheesta MDN:ssä:

https://developer.mozilla.org/en-US/docs/Web/CSS/word-wrap
Kommentoi
Ilmianna
Jaa
”Word-wrap" on muuten nimetty uudellleen muotoon ” overflow-wrap”. Kunhan selaintuki paranee, voi tuota ruveta käyttämään.
Kommentoi
Ilmianna
Jaa
Kyse ei ole taikasanasta, vaan käärmeöljystä (snake oil).

Hal uatk o sin ä ett ä teks tisi sana t menev ät po ikki i han mis tä satt uu? Jos haluat, niin pilaa toki sivusi tuolla "taikasanallasi".
Kommentoi
Ilmianna
Jaa
Ei rikkoja kirjoitti:
Kyse ei ole taikasanasta, vaan käärmeöljystä (snake oil).

Hal uatk o sin ä ett ä teks tisi sana t menev ät po ikki i han mis tä satt uu? Jos haluat, niin pilaa toki sivusi tuolla "taikasanallasi".
Sehän rivittää yhteen putkeen kirjoitetun sanan/linkin... ainoastaan jos se ei mahdu sille osoitettuun tilaan.

Ehdottoman tärkeä etenkin kun tehdään responsiivisia sivuja.
Kommentoi
Ilmianna
Jaa
Ei rikkoja kirjoitti:
Kyse ei ole taikasanasta, vaan käärmeöljystä (snake oil).

Hal uatk o sin ä ett ä teks tisi sana t menev ät po ikki i han mis tä satt uu? Jos haluat, niin pilaa toki sivusi tuolla "taikasanallasi".
Sana katkeaa vain siitä kohtaa, josta lähtien sana muuten valuisi elementin yli. Parempi pakotettu katkaisu kuin ruma ylivuoto.

Jos sivuilla käyttää pitkiä sanoja, voi käyttää nk. pehmeää yhdysmerkkiä, ”soft hyphen”, joka näkyy selaimessa vain, jos sana jaetaan sen kohdalta uudelle riville.
Esimerkiksi kuvitteellinen sana ”epäjärjestelmällistyttämättömyydelläänsäkäänköhän" voidaan merkitä "epä­jär­jes­tel­mäl­lis­tyt­tä­mät­tö­myy­del­lään­sä­kään­kö­hän", jolloin se tarvittaessa rivittyy kauniisti.
Kommentoi
Ilmianna
Jaa
HCJ kirjoitti:
Sana katkeaa vain siitä kohtaa, josta lähtien sana muuten valuisi elementin yli. Parempi pakotettu katkaisu kuin ruma ylivuoto.

Jos sivuilla käyttää pitkiä sanoja, voi käyttää nk. pehmeää yhdysmerkkiä, ”soft hyphen”, joka näkyy selaimessa vain, jos sana jaetaan sen kohdalta uudelle riville.
Esimerkiksi kuvitteellinen sana ”epäjärjestelmällistyttämättömyydelläänsäkäänköhän" voidaan merkitä "epä­jär­jes­tel­mäl­lis­tyt­tä­mät­tö­myy­del­lään­sä­kään­kö­hän", jolloin se tarvittaessa rivittyy kauniisti.
-tagi toimii toimii kuten &­, mutta se ei lisää yhdysmerkkiä sanan katkeamiskohtaan.
Kommentoi
Ilmianna
Jaa
HCJ kirjoitti:
-tagi toimii toimii kuten &­, mutta se ei lisää yhdysmerkkiä sanan katkeamiskohtaan.
…siis kuten ­
Kommentoi
Ilmianna
Jaa
+Lisää kommentti
Tällä työkalulla voi muuntaa koodit muotoon, joka Suomi24:n pitäisi ymmärtää. Silti ei ole takuuta, etteikö koodia häviä.
Kommentoi
Ilmianna
Jaa
1 VASTAUS:
Kommentoi
Ilmianna
Jaa
+Lisää kommentti

Vastaa alkuperäiseen viestiin

Miten saa sanan katkeamaan

Eli kirjoitan tekstiä CSS laatikkoon PHP scriptillä. CSS laatikko on määritelty tietyn levyiseksi, mutta jotkut sanat voivat olla pidempiä (mm. nettiosoitteita.) Miten saan sanan katkeamaan laatikon sisällä? Ei viitsisi PHP scriptiäkään muuttaa, koska ajattelin käyttää samaa scriptiä muihinkin tulostuksiin.

5000 merkkiä jäljellä

Peruuta