Это в WordPress (не уверен, что имеет значение)
Этот бит php выводит заголовок сообщения
<?php echo $data['nameofpost']; ?>
Это простой текст, который может быть длиной до 100 символов. Я бы хотел, чтобы выведенные символы были длиннее 20, чтобы отобразить «…» или просто ничего.
благодаря
После проверки длины строки с помощью 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..."
Другой способ вырезать строку в конце слова – с регулярным выражением. Этот параметр должен быть отключен со 100 символами или ближайшим словом break после 100 символов:
function firstXChars($string, $chars = 100) { preg_match('/^.{0,' . $chars. '}(?:.*?)\b/iu', $string, $matches); return $matches[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, вы захотите использовать многобайтовые версии mb_
строки ops для подсчета символов более соответствующим образом.
в вашем файле темы используйте что-то вроде этого, попробуйте использовать <div class="teaser-text"><?php the_content_limit(100, ''); ?></div>
<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(']]>', ']]>', $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>"; } }
удачи 🙂
if(count($data['nameofpost']) > 20) { echo(substr($data['nameofpost'], 0, 17)."..."); }
Для $data['nameofpost']
более 20 символов он выведет первые 17 плюс три точки ...