Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  JavaScript või PHP, iga 30 tähemärgi järel tühiku lisamine märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
raido357
HV veteran

liitunud: 26.09.2002




sõnum 25.01.2009 13:01:28 JavaScript või PHP, iga 30 tähemärgi järel tühiku lisamine vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 25.01.2009 13:30:52 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
Valdars
HV veteran
Valdars

liitunud: 22.02.2003




sõnum 25.01.2009 13:43:29 vasta tsitaadiga

PHP-s on selle jaoks wordwrap.
Kommentaarid: 47 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 44
tagasi üles
vaata kasutaja infot saada privaatsõnum
raido357
HV veteran

liitunud: 26.09.2002




sõnum 25.01.2009 14:12:40 vasta tsitaadiga

Valdars, tänud icon_smile.gif
Kommentaarid: 78 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 70
tagasi üles
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 25.01.2009 14:16:05 vasta tsitaadiga

Ja kui soov antud funktsiooni javascriptis kasutada, siis:
http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_wordwrap/
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 25.01.2009 14:49:23 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
nene
Kreisi kasutaja
nene

liitunud: 20.03.2004




sõnum 25.01.2009 16:09:10 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 25.01.2009 16:25:05 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
nene
Kreisi kasutaja
nene

liitunud: 20.03.2004




sõnum 25.01.2009 17:27:55 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  JavaScript või PHP, iga 30 tähemärgi järel tühiku lisamine
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
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



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.