Avatar
Eldest
Redaktor
Avatar
Eldest:

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
Redaktor
Avatar
jan.vencl:

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na jan.vencl
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Eldest
Redaktor
Avatar
Odpovídá na David Čápka
Eldest:

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
Redaktor
Avatar
Odpovídá na David Čápka
Eldest:

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
Redaktor
Avatar
Eldest:

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na Eldest
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Eldest
Redaktor
Avatar
Eldest:

Už se mi to podařilo zprovoznit.

 
Nahoru Odpovědět 3.11.2012 12:21
Avatar
Eldest
Redaktor
Avatar
Odpovídá na David Čápka
Eldest:

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.