вырезать текст после (x) количества символов - PullRequest
4 голосов
/ 27 апреля 2010

Это в WordPress (не уверен, что это имеет значение)

Этот бит php выводит заголовок сообщения

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

Это простой текст, который может быть длиной до 100 символов. То, что я хотел бы, это если выводимые символы имеют длину более 20, чтобы отображать «...» или просто ничего вообще.

Спасибо

Ответы [ 5 ]

15 голосов
/ 27 апреля 2010

После проверки длины строки с помощью 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..."
4 голосов
/ 27 апреля 2010

Еще один способ обрезать строку в конце слова с помощью регулярного выражения. Этот устанавливается на 100 символов или ближайший разрыв слова после 100 символов:

function firstXChars($string, $chars = 100)
{
    preg_match('/^.{0,' . $chars. '}(?:.*?)\b/iu', $string, $matches);
    return $matches[0];
}
0 голосов
/ 29 апреля 2010

в вашем файле темы используйте что-то вроде этого попробуйте использовать <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>";
   }
}

удачи :) 1007 *

0 голосов
/ 27 апреля 2010
<?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, вы можете использовать mb_ многобайтовые версии строковых операций для более правильного подсчета символов.

0 голосов
/ 27 апреля 2010
if(count($data['nameofpost']) > 20)
{
    echo(substr($data['nameofpost'], 0, 17)."...");
}

Для $data['nameofpost'] больше 20 символов он выдаст первые 17 плюс три точки ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...