Autor Zpráva
Honza Č
Profil *
Zdravím. Programuji si svůj engine na guestbook a chci ho udělat pokud možno co "nejblbuvzdornější" :) Data se mi vypisují z databáze do nastylovaného divu o šířce 500px, který je umistěn v divu (ktery zapouzdřuje celou stránku) o šířce 510px s vlastnostmi margin left a right na auto (+hacky pro ie)... Problém je, že když někdo napíše do guestbooku dlouhý řetězec stejných znaků/entit, tak se řádek nezalomí a přetéká do okolní stránky, takže to působí celkem neesteticky... Řešení overflow:hidden mi také nepřijde jako nejvhodnější, takže bych žádal o radu, jak by se dalo docílit toho, aby se text v divu (např mnoho teček) zalomil podle potřeby. Díky za rady

krteczek
Profil *
ahoj, tady timhle to rozbiješ:o)
// zde se vlozi na kazdy 36 znak mezera,tim se zalomí prilis dlouhe slova typu JATIROZBIJUVZHLEDSTRÁNKYJATIROZBIJUVZHLEDSTRÁNKYJATIROZBIJUVZHLEDSTRÁN KYJATIROZBIJUVZHLEDSTRÁNKY,
$odkaz = wordwrap($odkaz, 36, " ", 1);
ještě je dobré pomocí :
$odkaz=substr($odkaz,0,999);
vybrat jen prvních treba 1000 znaků (upozornit na to je slušnost, popripade pomoci javaskriptu hlídat pocet vlozených znaku a pri naplneni kvoty ho nepustit dál, ale v každem pripade to ošetri na servveru ještě tím oříznutím)
krteczek
Yuhů
Profil
prostě wordwrap()

dobré je místo mezery použít na lámání třeba tag <wbr> (sice zastaralý, ale funkční)
Honza Č
Profil *
Wordwrap znám, ale ten se v mém případě použít nedá, protože zalamuje i v html tagu nebo entitě. Navíc wordwrap zalomí po každém x-tém znaku, jakmile je to možné.... Jedině si udělat svoji funkci :/ Ještě si s tím trošku pohraju...

Honza Hučín
Profil
Tato funkce rozsekne slovo delší než $mez znaků.

function rozsekni_dlouhy($retezec,$mez)
{
$pole=explode(" ",$retezec);
while (list($i,$h) = each($pole))
{
if (($delka=strlen($h))>$mez)
{
$pomretez="";
for ($j=0;$j<($delka/$mez);$j++)
$pomretez .= substr($h,$j*$mez,$mez)." ";
$pole[$i]=$pomretez;
//rozdeli retezec na vic kusu mezerami
}
}
$retezec2=implode($pole," ");
return $retezec2;
}
Toto téma je uzamčeno. Odpověď nelze zaslat.