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?

0voto

tsgrasser Punkte 712

Substr() wäre am besten, Sie wollen auch die Länge der Zeichenkette zuerst überprüfen

$str = 'someLongString';
$max = 7;

if(strlen($str) > $max) {
   $str = substr($str, 0, $max) . '...';
}

wordwrap schneidet die Zeichenfolge nicht ab, sondern teilt sie nur auf...

0voto

akond Punkte 15345

$Breite = 10;

$a = preg_replace ("~^(.{{$width}})(.+)~", '\\1…', $a);

oder mit wordwrap

$a = preg_replace ("~^(.{1,${width}}\b)(.+)~", '\\1…', $a);

0voto

Waqleh Punkte 9052

Diese Lösung schneidet keine Wörter ab, sondern fügt drei Punkte nach dem ersten Leerzeichen hinzu. Ich habe die Lösung von @Raccoon29 bearbeitet und alle Funktionen durch folgende ersetzt mb_ Funktionen, damit dies für alle Sprachen wie Arabisch funktioniert

function cut_string($str, $n_chars, $crop_str = '...') {
    $buff = strip_tags($str);
    if (mb_strlen($buff) > $n_chars) {
        $cut_index = mb_strpos($buff, ' ', $n_chars);
        $buff = mb_substr($buff, 0, ($cut_index === false ? $n_chars : $cut_index + 1), "UTF-8") . $crop_str;
    }
    return $buff;
}

0voto

Jaykishan Punkte 1301
$yourString = "bla blaaa bla blllla bla bla";
$out = "";
if(strlen($yourString) > 22) {
    while(strlen($yourString) > 22) {
        $pos = strrpos($yourString, " ");
        if($pos !== false && $pos <= 22) {
            $out = substr($yourString,0,$pos);
            break;
        } else {
            $yourString = substr($yourString,0,$pos);
            continue;
        }
    }
} else {
    $out = $yourString;
}
echo "Output String: ".$out;

0voto

jim_kastrin Punkte 4462

Wenn es keine feste Vorgabe für die Länge der abgeschnittenen Zeichenfolge gibt, kann man dies verwenden, um auch das letzte Wort abzuschneiden und zu verhindern:

$text = "Knowledge is a natural right of every human being of which no one
has the right to deprive him or her under any pretext, except in a case where a
person does something which deprives him or her of that right. It is mere
stupidity to leave its benefits to certain individuals and teams who monopolize
these while the masses provide the facilities and pay the expenses for the
establishment of public sports.";

// we don't want new lines in our preview
$text_only_spaces = preg_replace('/\s+/', ' ', $text);

// truncates the text
$text_truncated = mb_substr($text_only_spaces, 0, mb_strpos($text_only_spaces, " ", 50));

// prevents last word truncation
$preview = trim(mb_substr($text_truncated, 0, mb_strrpos($text_truncated, " ")));

In diesem Fall, $preview wird sein "Knowledge is a natural right of every human being" .

Live-Code-Beispiel: http://sandbox.onlinephpfunctions.com/code/25484a8b687d1f5ad93f62082b6379662a6b4713

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