7 Stimmen

Text nach einer Anzahl von (x) Zeichen abschneiden

Dies ist in Wordpress (nicht sicher, ob das einen Unterschied macht)

Dieser Teil von php gibt den Titel des Beitrags aus

<?php echo $data['nameofpost']; ?>

Es handelt sich um einfachen Text, der bis zu 100 Zeichen lang sein kann. Was ich möchte, ist, wenn die ausgegebenen Zeichen über 20 lang sind, um '...' oder einfach gar nichts anzuzeigen.

Danke

19voto

Ben Punkte 15588

Nachdem Sie die Länge der Zeichenkette mit strlen verwenden. Teilbereich

$string = "This is a large text for demonstrations purposes";
if(strlen($string) > 20) $string = substr($string, 0, 20).'...';
echo $string;

Ausgänge

"This is a large text..."

5voto

John Conde Punkte 212467

Eine andere Möglichkeit, die Zeichenfolge am Ende eines Wortes abzuschneiden, ist die Verwendung einer Regex. Diese ist so eingestellt, dass sie bei 100 Zeichen oder bei der nächsten Worttrennung nach 100 Zeichen abbricht:

function firstXChars($string, $chars = 100)
{
    preg_match('/^.{0,' . $chars. '}(?:.*?)\b/iu', $string, $matches);
    return $matches[0];
}

0voto

bobince Punkte 512550
<?php
    function abbreviate($text, $max) {
        if (strlen($text)<=$max)
            return $text;
        return substr($text, 0, $max-3).'...';
    }
?>

<?php echo htmlspecialchars(abbreviate($data['nameofpost'], 20)); ?>

Eine gängige Verbesserung wäre es, zu versuchen, die Zeichenfolge am Ende eines Wortes abzuschneiden:

        if (strlen($text)<=$max)
            return $text;
        $ix= strrpos($text, ' ', $max-2);
        if ($ix===FALSE)
            $text= substr($text, 0, $max-3);
        else
            $text= substr($text, 0, $ix);
        return $text.'...';

Wenn Sie UTF-8-Zeichenfolgen verwenden, sollten Sie die mb_ Multibyte Versionen der String-Ops, um die Zeichen angemessener zu zählen.

0voto

mireille raad Punkte 281

In Ihrer Themadatei etwas wie das folgende verwenden Versuche es mit <div class="teaser-text"><?php the_content_limit(100, ''); ?></div>

dann in den functions.php-Dateien Folgendes verwenden

function the_content_limit($max_char, $more_link_text = '(more...)', $stripteaser = 0, $more_file = '')
 {

    $content = get_the_content($more_link_text, $stripteaser, $more_file);
    $content = apply_filters('the_content', $content);
    $content = str_replace(']]>', ']]&gt;', $content);
    $content = strip_tags($content);

   if (strlen($_GET['p']) > 0) 
{

      echo "<div>";
      echo $content;
      echo "</div>";
   }
   else if ((strlen($content)>$max_char) && ($espacio = strpos($content, " ", $max_char )))
 {

        $content = substr($content, 0, $espacio);
        $content = $content;
        echo "<div>";
        echo $content;
        echo "...";
        echo "</div>";
   }
   else {
      echo "<div>";
      echo $content;
      echo "</div>";
   }
}

viel Glück :)

-1voto

Josh K Punkte 27354
if(count($data['nameofpost']) > 20)
{
    echo(substr($data['nameofpost'], 0, 17)."...");
}

については $data['nameofpost'] größer als 20 Zeichen, werden die ersten 17 Zeichen plus drei Punkte ausgegeben ... .

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