【发布时间】:2010-04-26 21:52:00
【问题描述】:
这是在 wordpress 中(不确定是否有所作为)
这点php输出帖子标题
<?php echo $data['nameofpost']; ?>
它是简单的文本,最长可达 100 个字符。我想要的是,如果输出的字符超过 20 长以显示 '...' 或者根本什么都没有。
谢谢
【问题讨论】:
这是在 wordpress 中(不确定是否有所作为)
这点php输出帖子标题
<?php echo $data['nameofpost']; ?>
它是简单的文本,最长可达 100 个字符。我想要的是,如果输出的字符超过 20 长以显示 '...' 或者根本什么都没有。
谢谢
【问题讨论】:
在单词末尾切断字符串的另一种方法是使用正则表达式。这一项设置为在 100 个字符处截断或在 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_ multibyte 版本来更适当地计算字符数。
【讨论】:
在你的主题文件中使用类似这样的东西
尝试使用<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)."...");
}
对于大于 20 个字符的 $data['nameofpost'],它将输出前 17 个加三个点 ...。
【讨论】: