ugrás a tartalomhoz

Hosszú szavak törése

andras10 · 2008. Okt. 28. (K), 13.04
Üdv. a Fórumozóknak !

Lenne egy kérdésem, ami nem éppen PHP, hanem PERL, de ilyen rovatot nem találtam. Remélem azért tud segíteni valaki.

Fontos számomra, hogy szándékosan ne lehessen széttúrni értelmetlen, hosszú, elválasztás nélküli szavak beírásával az oldalt, ezért ezt a megoldást használom :

use Text::Wrap;
$Text::Wrap::columns=50;
$Text::Wrap::separator=" ";
print wrap('','',$szoveg);

Egyetlen nagy gond van : ez megtöri az <a href=........> helyre a program által létrehozott webes hivatkozásokat is, ami rákattintás után az adott lapot elérhetetlenné teszi.

Van-e esetleg olyan ötlet, amivel meg lehet értetni a programmal, hogy minden beírt szöveget megtörhet, de ezt az egyet nem?
Vagy van-e a túl hosszú szavak megtörésének más, elegánsabb kiszolgálóoldali módja?
 
1

CSS?

deejayy · 2008. Okt. 28. (K), 13.48
CSS!

overflow: hidden;
2

Ez min segít?

janoszen · 2008. Okt. 28. (K), 14.57
Ez konkrétan min is segítene?

Én inkább azt csinálnám, hogy azokat a szavakat törném meg, amik NEM <> között vannak. Ezt reguláris kifejezésekkel elég könnyen meg tudod csinálni.

Egyébként mi az amit manapság még Perlben fejlesztenek webre?
3

perl

andras10 · 2008. Okt. 28. (K), 16.32
Egy régi programot foltozok, amit nem akarok lecserélni, mert megszoktam és jól működik.
Ezzel a use Text::Wrap; modullal az a baj, hogy mindent tör.


Olyan irányba indultam el, hogy a szöveget szavakra bontom és beolvastatom egy tömbbe. Ha az adott elem 70 betűnél hosszabb, akkor a hosszabb részt levágnám.

if ( length($words[$i]) > 70 ) {
$words4[$i]=substr($words[$i],-70)."... "; }

Ezzel csak az a baj, hogy a sor végéről számolja a 70-et, miközben nekem az első hetven betűre lenne szükségem és utánaírnék ...-ot.

Van valami ötlet arra nézve, hogy a sor elejétől hagyja meg az első 70 betűt ?
A split ( ) az elválasztó elemnél tud csak kettéhasítani, az elválasztó elem pedig ez esetben bármi lehet. Vagy van rá mód, hogy megértse, hogy legyen a 71. elem az elválssztó elem ?
4

Akkor az elejét vágd

Poetro · 2008. Okt. 28. (K), 17.29
Ha neked az eleje kell, akkor miért a végéről vágsz? Ha -70 helyett 0, 70-et használnál:
if ( length($words[$i]) > 70 ) {
  $words4[$i] = substr($words[$i], 0, 70) ."... "; 
}
5

Drupal megoldása (PHP)

Poetro · 2008. Okt. 28. (K), 17.34
A Drupal-ban van ilyen URL rövidítő, ami ugyan PHP, de szvsz ki tudod mazsolázni a neked kellő darabokat, és átalakítani PERL-re:

http://api.drupal.org/api/function/_filter_url/5
Ezek még hasznosak lehetnek:
http://api.drupal.org/api/function/_filter_url_parse_full_links/5
http://api.drupal.org/api/function/_filter_url_trim/5
6

Köszönet

andras10 · 2008. Okt. 28. (K), 18.38
Köszönöm a segítséget, rendben van a dolog. Néha sajnos a legegyszerűbb dolgok sem jutnak az eszembe magamtól.

Ezek a PHP-s Drupalos kódok kiválóak, remélem mások is hasznosítani fogják.