Diskuze: Zkrácení řetězce

Tvůrce

Zobrazeno 9 zpráv z 9.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
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]=".";
}
}
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;
}
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.
Problém je v tom, že pokud zadám třeba písmeno ž, tak to bere jako dva znaky. (ten mb_strlen)
Nemáš nastavene kódování tou funkcí mb_set_internal_encoding, 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.
Kódování jsem nastavené měl, ale trochu jinak, takže mi to nefungovalo.
Zobrazeno 9 zpráv z 9.