NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Zkrácení stringu respektující celá slova

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar

Člen
Avatar
:21.9.2016 12:28

Ahoj. Potřebuji zkrátit string na nějaký počet znaků. Funkci už mám napsanou, vždy má string maximálně daný limit a započítává se i string přidaný na konec (např. trojtečka) v případě, že se zkracuje.
Jediný problém je v případě, že v textu nejsou žádné mezery. Při překročení délky pak vrací funkce jen koncový řetězec.

/**
     * Truncate string to the $maxLength, respecting whole words (only $append will remain when string is only one word)
     * @param string $string
     * @param int $maxLength
     * @param string $append
     * @return string
     */
    public static function truncate(string $string, int $maxLength, string $append = '...'): string {
        if (mb_strlen($string) > $maxLength || empty($string)) {
            $words = preg_split('/\s/', $string);
            $output = '';
            $i = 0;
            while (1) {
                $length = mb_strlen($output) + mb_strlen($words[$i]) + mb_strlen($append);
                if ($length > $maxLength) {
                    break;
                } else {
                    $output .= " " . $words[$i];
                    ++$i;
                }
            }
            $output .= $append;
        } else {
            $output = $string;
        }
        return $output;
    }
Editováno 21.9.2016 12:28
 
Odpovědět
21.9.2016 12:28
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 1 zpráv z 1.