2014-02-02 3 views
-1

У меня есть код PHP, который отображает описание каждого сообщения на главной странице (www.kushaku.com): Ниже приведен код, который отображает описание:Как ограничить строку некоторого символа в PHP

<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); 
?> 

но это стил l полный контент. Если я печатаю счет ($ words), он показывает '1', , если я беру strlen строки $, это дает мне вывод как '0'. Если я использую count_chars(), он дает мне вывод как '0'.

Просьба предложить любой способ достижения моей цели.

Спасибо заранее, Вивек

+0

Почему бы не использовать 'substr()'? –

+0

Является ли это Wordpress? – deceze

+0

да это wordpress – user3193385

ответ

0

the_content() будет выход содержимое на страницу. Это не return, это echo s. Я считаю, что получить содержимое в переменной вам нужно использовать get_the_content().

Это только мое прохождение знание Wordpress, хотя, я был бы очень удивлен, если бы не было такой функции выдержка уже встроены.

+0

Спасибо, вы спаситель жизни, я новичок в Wordpress, используя get_the_content(), я получаю правильный вывод. благодаря тонну. – user3193385

0

substr Я думаю, что это функция является то, что вам нужно.

$a = "this is test description"; 

echo substr($a, 0, 4); 
0

substr С помощью вы можете получить строку (первый PARM), начиная form (2-й парм) указанной вами длины (3-й парм). Так что-то вроде этого:

$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().

В любом случае вы тогда должны использовать вас собственную функцию в случае, если вы хотите, чтобы указать другую длину отрывка

0

Это так просто:

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

Попробуйте это:

function limit_string($str, $limit){ 
    return strlen($str)>$limit ? substr($str,0,$limit)."..." : $str; 
} 
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); 

Эта функция останавливается на конце слова до достижения предела слова, не разрезая wo ...

phpfiddle

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; 
} 
0

Несколько подходов о том, как обрезать содержимое были размещены здесь уже, так что я не буду размещать другую функцию или фрагмент кода здесь.

А что такое отсутствует, чтобы ваша функция работала с wordpress - вам нужно добавить новую функцию в качестве фильтра для the_content.

Просто найдите «wordpress the_content hook» или см. E. г. Hooking the_content filter in wordpress

Приветствия!

Смежные вопросы