如何将字符串限制为php中的某些字符

时间:2014-02-02 09:50:06

标签: php

我有一个PHP代码,显示主页(www.kushaku.com)中每篇文章的描述: 以下是显示说明的代码:

   <p class="shortdesc1">
     <?php the_content(); ?> 
   </p>

我试着将主页的描述部分限制为一些字符,比如180个字符,然后显示'...'

我尝试了以下代码:

  function string_limit_words($string, $word_limit)
 {
   $words = explode(' ', $string, ($word_limit + 1));
   if(count($words) > $word_limit) {
   array_pop($words);
   //add a ... at last article when more than limit word count
   echo implode(' ', $words)."..."; } else {
   //otherwise
   echo implode(' ', $words); }
 }




 <?php
   $excerpt = the_content();
   echo string_limit_words($excerpt,25);
 ?>

但它仍然显示完整内容。 如果我打印计数($ words),它显示'1', 如果我取$ string的strlen,它会输出为'0'。 如果我使用count_chars(),它会将输出设为'0'。

请提出任何方法来实现我的目标。

先谢谢, 的Vivek

8 个答案:

答案 0 :(得分:0)

我认为substr功能是您需要的。

$a = "this is test description";

echo substr($a, 0, 4);

答案 1 :(得分:0)

the_content()输出内容到页面中。它不是return,而是 echo s 。我相信要将内容放在您需要使用get_the_content()的变量中。

这只是我对Wordpress的了解,但如果没有内置这样的摘录功能,我会感到非常惊讶。

答案 2 :(得分:0)

通过使用substr,您可以获得指定长度(第3个参数)的起始形式(第2个参数)的字符串(第1个参数)。所以像这样:

$excerpt = "Hi I'm a string";

function string_limit_words($str, $limit)
{
    return substr($str, 0, $limit) . '...';
}

echo string_limit_words($excerpt, 10);

看到您正在使用Wordpress 我认为存在the_excerpt()函数来获取摘录而不是使用the_content()。我不知道the_excerpt()返回的字符长度。

无论如何,如果你想指定不同长度的摘录,你需要使用自己的功能

答案 3 :(得分:0)

这很简单:

$excerpt = substr($excerpt, 0, 180) . '...';

答案 4 :(得分:0)

试试这个:

function limit_string($str, $limit){
    return strlen($str)>$limit ?  substr($str,0,$limit)."..." : $str;
}

答案 5 :(得分:0)

function string_limit_words($string, $word_limit) {
    $words = explode(" ", $string);
    // get 1st word length
    $count = strlen($words[0]);
    $i = 0;
    $arr = array();
    // while total length is less then limit (you can add +$i to count whitespaces too)
    while ($count < $word_limit) {
            // add word to result
        $arr[] = $words[$i];
        $count += strlen($words[$i+1]);
        $i++;
    }
    return implode(" ", $arr)." ...";
}

$string = 'Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit';
echo string_limit_words($string, 30);

此功能在到达字数限制之前停止在字结束,而不是切割字...

phpfiddle

答案 6 :(得分:0)

试试这个:

function string_limit_words($string, $word_limit)
{
    $string = substr($string, 0, $word_limit);
    if (($i = strrpos($string, ' ')) !== false) $string = substr($string, 0, $i);
    return preg_match('/^(.+\w)[.,;]?\s*$/', $string, $arr)? $arr[1] : $string;
}

答案 7 :(得分:0)

有关如何修剪内容的几种方法已在此处发布,因此我不会在此处发布其他功能或代码段。

缺少以使您的功能与wordpress一起使用是因为您必须将新功能添加为the_content的过滤器。

只需搜索“wordpress the_content hook”或查看e。 G。 Hooking the_content filter in wordpress

干杯!