在(x)字符数量之后剪切文本

时间:2010-04-26 21:52:01

标签: php wordpress

这是在wordpress中(不确定会产生什么影响)

这一点的php输出帖子标题

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

这是一个简单的文字,最长可达100个字符。我想要的是,如果输出的字符长度超过20来显示“......”或根本没有显示。

由于

5 个答案:

答案 0 :(得分:15)

使用strlen检查字符串长度后,使用substr

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

输出

"This is a large text..."

答案 1 :(得分:4)

另一种在单词结尾处剪掉字符串的方法是使用正则表达式。这个设置为100个字符或100个字符后最近的单词中断:

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

答案 2 :(得分:0)

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

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

一个常见的改进是尝试在一个单词的末尾剪切字符串:

        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.'...';

如果您使用的是UTF-8字符串,则需要使用字符串ops的mb_ multibyte版本来更恰当地计算字符数。

答案 3 :(得分:0)

你的主题文件中的

使用这样的东西 尝试使用<div class="teaser-text"><?php the_content_limit(100, ''); ?></div>

然后在functions.php文件中,使用此

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>";
   }
}
祝你好运:)

答案 4 :(得分:-1)

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

对于$data['nameofpost']大于20个字符,它将输出前17个加上三个点...