Hosszú szavak törése
Ü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?
■ 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?
CSS?
overflow: hidden;
Ez min segít?
É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?
perl
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 ?
Akkor az elejét vágd
Drupal megoldása (PHP)
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
Köszönet
Ezek a PHP-s Drupalos kódok kiválóak, remélem mások is hasznosítani fogják.