ugrás a tartalomhoz

Link rövidítése

sEEcher · 2010. Júl. 25. (V), 15.07
Sziasztok!

Van egy n hosszúságú karakterláncom (kommentek), amit egy saját függvénnyel le rövidítek 80 karakter hosszúra. Tekintettel arra, hogy a rövidített szöveg egy oldalsó oszlopban van elhelyezve (legutolsó kommentek), nem engedhető meg, hogy értelmetlenül hosszú (szándékosan elnyújtott) szavak kerüljenek bele, egy

$comment_message = preg_replace('/(\w{20})/','\1 ',$comment_message);

sorral megspékeltem a kódot, így már minden megahosszú szóban a 20. karakter után beszúr egy szóközt. Ezzel meg is lenne oldva a probléma, viszont ha valaki egy hosszú webcímet ír a kommentbe, ez a megoldás nem a legmegfelelőbb. Ugyanis a egy hosszú url esetén - ami tele van / karakterekkel - külön szónak tekinti a két / jel közötti részeket is.

Például:

http://webcim.hu/000/00000/0000000000000000000000/0000/00000

Ebben az esetben csak a leghosszabb 0 sorba fogja beszúrni a szőközt, ugyanis a / jeleket úgy kezeli, mintha szóközök lennének, tehát az 5db 0 sor egyenként külön szavak, így a számolást nem a h betűtől kezdi, hanem a / jelek után mindig újrakezdve. Ez természetesen nem jó, mert a böngésző a / jelet nem szóköznek tekinti ezért nem is töri, így az oldal eléggé szét tud csúszni.

Tehát arra keresnék megoldást, hogy az egész webcímet egy szónak kezelje.

A segítségeteket előre is köszönöm!
 
1

Reguláris kifejezés

Poetro · 2010. Júl. 25. (V), 16.32
Csak a reguláris kifejezésedet kell módosítani, hogy mást tekintsen szóépítő karakternek. Például [^ \-]{20} esetén minden 20 karakterre illeszkedik, ami nem szóköz vagy kötőjel.