Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
raido357
HV veteran
liitunud: 26.09.2002
|
25.01.2009 13:01:28
JavaScript või PHP, iga 30 tähemärgi järel tühiku lisamine |
|
|
Terv,
oleks vaja iga 30 tähe järel asendada või lisada tühik.
Probleemiks nimelt see, et kui kasutaja sisestab ilma tühikuteta teksti, a'la "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";, siis seda ju ei wrapita ning lehe kujundus läheb paigast ära.
Kuidas probleemi lahendada? Olen üritanud iga 30 tähe tagant näiteks tühiku vahele toppida aga hästi ei taha õnnestuda mul see. (JavaScriptiga)
|
|
Kommentaarid: 78 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
70 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004
|
25.01.2009 13:30:52
|
|
|
Sikuta sõna stringi ja siis tsükliga väljasta (string[0] on näiteks stringi esimene täht, string[1] teine jne).
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
Valdars
HV veteran

liitunud: 22.02.2003
|
25.01.2009 13:43:29
|
|
|
PHP-s on selle jaoks wordwrap.
|
|
Kommentaarid: 47 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
44 |
|
tagasi üles |
|
 |
raido357
HV veteran
liitunud: 26.09.2002
|
|
Kommentaarid: 78 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
70 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
25.01.2009 14:49:23
|
|
|
Selle saaksid nii lahendada, kuid mis juhtub siis, kui see koht satub normaalse sõna keskele? Tekitab sinna tühiku.
<script type="text/javascript">
var str="Hellohb gfer greg ergrgrgrgrgrgrgrgrgrgrgr erg ergre gerg rege g reggrgrappyworld!";
var algString;
var newString="";
var pikkus=30
for(i=0;i<str.length;i=i+pikkus) {
algString = str.substr(i,pikkus)
newString=newString+algString+" ";
}
document.write(newString);
</script> |
Edit:
Kui miku functioni õigesti kasutada, siis see ei lõika sõna keskelt pooleks ja jätab sinu pika 40 märgise sõna poolitamata. Aga kui kasutada nii, et ta kindlalt 30 pealt lõikaks siis on sama viga mis minu functionil lõigub ka lühemad tükkideks sealtmaalt, kus ette antud. Tuleks ikkagi seada sisse sõnavahe kontroll ja siis, kui lõikamisel on tühik ei tee midagi aga kui lõikab viskab vahele poolituskriipsu ja tühiku.
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
nene
Kreisi kasutaja

liitunud: 20.03.2004
|
25.01.2009 16:09:10
|
|
|
andrusny kirjutas: |
Kui miku functioni õigesti kasutada, siis see ei lõika sõna keskelt pooleks ja jätab sinu pika 40 märgise sõna poolitamata. |
Sa ilmselt pead silmas selle kasutamist nii, et neljas parameeter jääb vaikimisi false väärtusega. Mu meelest on see pigem vale kasutamine, kui see ei vasta sinu soovitud tulemusele.
tsitaat: |
Aga kui kasutada nii, et ta kindlalt 30 pealt lõikaks siis on sama viga mis minu functionil lõigub ka lühemad tükkideks sealtmaalt, kus ette antud. Tuleks ikkagi seada sisse sõnavahe kontroll ja siis, kui lõikamisel on tühik ei tee midagi aga kui lõikab viskab vahele poolituskriipsu ja tühiku. |
Katsetasin toda funktsiooni ning ei täheldanud küll, et see etteantust lühemaid sõnu poolitaks. Sõnavahede kontroll on seal täiesti olemas.
Küll on wordwrap() funktsiooni probleem (nii PHP ja JS versiooni puhul), et pole võimalust piirduda vaid pikkade sõnade poolitamisega. Näiteks:
wordwrap("lühike lühike vägavägapikk", 7, "\n", true); |
annab tulemuseks:
lühike \n
lühike \n
vägaväg\n
apikk |
Kuid pole võimalik saavutada sellist tulemust:
lühike lühike vägaväg\n
apikk |
Kui tahame pika sõna poolitada vaid tühikuga või reavahatusega, siis pole suurt vahet - mitu tühikut HTML-is kuvatakse nagunii ühe tühikuna. Kuid kui soovime pika sõna poolitamisel lisada ka poolitusmärgi, siis wordwrap() ei sobi. Samas poolitusmärgi lisamine on ise üksjagu ohtlik - näiteks kui poolitatavaks tekstiks on pikk URL.
Aga jah, sellist asja peaks reeglina tegema siiski serveri poole peal, mitte JavaScriptis.
_________________ Mõistus otsas? Pane pinusse... |
|
Kommentaarid: 24 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
23 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
25.01.2009 16:25:05
|
|
|
Jah sa lähtusid sõna pikkusest ja nagu siis paneks pikemale sõnale mis ette antud (sinu puhul 7 ) selle tühiku või reavahetuse. Mina määrasin selle pikkuseks kohe 30 nagu kasutaja soovis ja siis kukkusin tühikuid loopima.
Kui kasutasin näite koodi:
document.write(wordwrap('The quick brown fox jumped gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg over the lazy dog.', 22, '<br>')); |
siis kui sõna juhtus pikem olema jättis ta selle poolitamata.
kui kasutasin aga näidet 1:
document.write(wordwrap('Kevin van Zonneveld gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg', 22, '<br>', true)); |
siis lõikas teksti täpselt 22 märgi kohalt olenemata, kas oli sõna keskel või tühik.
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
nene
Kreisi kasutaja

liitunud: 20.03.2004
|
25.01.2009 17:27:55
|
|
|
andrusny kirjutas: |
kui kasutasin aga näidet 1: [--] siis lõikas teksti täpselt 22 märgi kohalt olenemata, kas oli sõna keskel või tühik. |
Selle näite puhul asub 22. märk selle ggg.. sõna sees:
Kevin van Zonneveld ggggggggggggggggggggggggggggggggggggggggggggggggggg...
^
0000000001111111111222222222233333333334
1234567890123456789012345678901234567890 |
...kuid sealt kohalt ta seda sõna pooleks ei lõika. Lõikamine toimub hoopis vahetult enne selle ggg... sõna algust.
Loendad vist valesti.
_________________ Mõistus otsas? Pane pinusse... |
|
Kommentaarid: 24 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
23 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|