384 Stimmen

Abschneiden einer Zeichenkette auf die ersten n Zeichen einer Zeichenkette und Hinzufügen von drei Punkten, wenn irgendwelche Zeichen entfernt werden

Wie kann ich die ersten n Zeichen eines Strings in PHP ermitteln? Wie kann ich eine Zeichenkette am schnellsten auf eine bestimmte Anzahl von Zeichen kürzen und bei Bedarf '...' anhängen?

1voto

Saikelu Punkte 71

Für diesen Zweck habe ich eine Funktion entwickelt

 function str_short($string,$limit)
        {
            $len=strlen($string);
            if($len>$limit)
            {
             $to_sub=$len-$limit;
             $crop_temp=substr($string,0,-$to_sub);
             return $crop_len=$crop_temp."...";
            }
            else
            {
                return $string;
            }
        }
Sie rufen die Funktion einfach mit String und Limite auf
z. B: str_short("hahahahahah",5) ;
schneidet die Zeichenkette ab und fügt am Ende "..." hinzu
)

1voto

christoz Punkte 56

Dies ist mein Job

    function cutat($num, $tt){
        if (mb_strlen($tt)>$num){
            $tt=mb_substr($tt,0,$num-2).'...';
        }
        return $tt;
    }

wobei $num für die Anzahl der Zeichen und $tt für die zu manipulierende Zeichenkette steht.

1voto

tfont Punkte 10180

Um innerhalb einer Funktion (zur wiederholten Verwendung) eine dynamisch begrenzte Länge zu erstellen, verwenden Sie:

function string_length_cutoff($string, $limit, $subtext = '...')
{
    return (strlen($string) > $limit) ? substr($string, 0, ($limit-strlen(subtext))).$subtext : $string;
}

// example usage:
echo string_length_cutoff('Michelle Lee Hammontree-Garcia', 26);

// or (for custom substitution text
echo string_length_cutoff('Michelle Lee Hammontree-Garcia', 26, '..');

1voto

TravisO Punkte 9202

Am besten abstrahieren Sie Ihren Code wie folgt (beachten Sie, dass die Begrenzung optional ist und standardmäßig auf 10 gesetzt wird):

print limit($string);

function limit($var, $limit=10)
{
    if ( strlen($var) > $limit )
    {
        return substr($string, 0, $limit) . '...';
    }
    else
    {
        return $var;
    }
}

1voto

Sergiy Sokolenko Punkte 5707

Ich bin mir nicht sicher, ob dies die schnellste Lösung ist, aber es sieht so aus, als ob es die kürzeste ist:

$result = current(explode("\n", wordwrap($str, $width, "...\n")));

P.S. Einige Beispiele finden Sie hier https://stackoverflow.com/a/17852480/131337

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X