Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Eldest
Tvůrce
Avatar
Eldest:3.11.2012 0:01

Ahoj, mohl by mi někdo poradit? Potřeboval bych udělat, když mám řetězec a v něm nějaké věty, tak abych mohl nastavit maximální povolenou délku a pokud by byla překročena, tak zbytek řetězce by byl nahrazen tečkami (pouze třemi). Mám problém s tím, že jsem nic nenašel ani mi nic nefungovalo pro diakritiku (…ščřř….) a mezery, aby je to nevynechalo nebo, aby to tečky připsalo jen v případě, že byla překročena maximální velikost. Díky

 
Odpovědět
3.11.2012 0:01
Avatar
jan.vencl
Tvůrce
Avatar
jan.vencl:3.11.2012 10:09

A o jaké technologii mluvíš? PHP?
tak možnost je tahle třeba: celou větu projedeš forcyklem a provadiš podmínku a přepisuješ neřešíš diakritiku ale pozici :) snad ti to pomůže

$veta="Dobrý den, co to že píšete komentáře takhle v noci?"
$povolena_delka=10;
for($i=0;$i<=strlen($veta);$i++)
{
 if($i>=$povolena_delka)
 {
  $veta[$i]=".";
 }
}
 
Nahoru Odpovědět
3.11.2012 10:09
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na jan.vencl
David Hartinger:3.11.2012 11:19

Určitě bych nic neprojížděl cyklem. Čeština záleží na kódování, které používáš. Pokud UTF8, musíš ji speciálně nastavit, je to vysvětlené ve zdejším PHP manuálu: http://www.itnetwork.cz/…y-php-manual. Pro práci s řetězci poté musíš používat funkce s prefixem mb_. Pokud používáš jiné kódování, tak ty bez prefixu, ale měl bys používat vždy UTFko.

PHP má samo na tohle funkci, ale nemí UTF a ještě tam nedává tečky, takže je k ničemu :)

Můžu ti poslat funkci, co používáme zde na devbooku:

function shorten($text, $length)
{
        if (mb_strlen($text) > $length)
                $text = mb_substr($text, 0, $length - 3) . '...';
        return $text;
}
Nahoru Odpovědět
3.11.2012 11:19
You are the greatest project you will ever work on.
Avatar
Eldest
Tvůrce
Avatar
Odpovídá na David Hartinger
Eldest:3.11.2012 11:51

Díky, vyzkouším to. Používám UTF8 a mluvím o PHP. Všechno to co říkáš, jsem zkoušel nějak udělat, ale buď mi to nezapočítalo znaky typu š,č,ř atd. nebo mezery nebo tečky. To tvoje vyzkouším.

 
Nahoru Odpovědět
3.11.2012 11:51
Avatar
Eldest
Tvůrce
Avatar
Odpovídá na David Hartinger
Eldest:3.11.2012 12:14

Problém je v tom, že pokud zadám třeba písmeno ž, tak to bere jako dva znaky. (ten mb_strlen)

 
Nahoru Odpovědět
3.11.2012 12:14
Avatar
Eldest
Tvůrce
Avatar
Eldest:3.11.2012 12:16

Asi to udělám tak, že prvně odstraním diakritiku, abych přesně věděl, kolik je tam znaků.

 
Nahoru Odpovědět
3.11.2012 12:16
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Eldest
David Hartinger:3.11.2012 12:21

Nemáš nastavene kódování tou funkcí mb_set_internal_en­coding, UTFko není totiž výchozí kódování pro ty mb_ funkce. Odstraňováním diakritiky si jen přesouváš problém jinam, stejně se ti za chvíli zase stane, že ty funkce budeš někde potřebovat.

Nahoru Odpovědět
3.11.2012 12:21
You are the greatest project you will ever work on.
Avatar
Eldest
Tvůrce
Avatar
Eldest:3.11.2012 12:21

Už se mi to podařilo zprovoznit.

 
Nahoru Odpovědět
3.11.2012 12:21
Avatar
Eldest
Tvůrce
Avatar
Odpovídá na David Hartinger
Eldest:3.11.2012 12:22

Kódování jsem nastavené měl, ale trochu jinak, takže mi to nefungovalo.

 
Nahoru Odpovědět
3.11.2012 12:22
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.