限制来自<;的字符数;?php_标签?>;

限制来自<;的字符数;?php_标签?>;,php,wordpress,Php,Wordpress,我有一个布局,必须显示水平的标签。我希望能够限制输出的字符数 示例-如果我将限制设置为14,则应发生以下情况 原文:猫、狗、雨 新输出:Cats、Dogs、Ra. 请注意,返回一个数组。这是所有返回的内容,我希望限制为14个字符 更新 为了消除任何困惑,我更新了一个屏幕截图,显示了我为什么要设置这个限制。这将使我更清楚地了解我正在搜索哪种解决方案如何使用该功能: $string_new = substr($string, 0, 14); echo $string_new; 如果文本之间有htm

我有一个布局,必须显示水平的标签。我希望能够限制输出的字符数

示例-如果我将限制设置为14,则应发生以下情况

原文:
猫、狗、雨

新输出:
Cats、Dogs、Ra.

请注意,
返回一个数组。这是所有返回的内容,我希望限制为14个字符

更新 为了消除任何困惑,我更新了一个屏幕截图,显示了我为什么要设置这个限制。这将使我更清楚地了解我正在搜索哪种解决方案

如何使用该功能:

$string_new = substr($string, 0, 14);
echo $string_new;
如果文本之间有html标记,您可能还需要使用
strip\u tags
功能。

如何使用该功能:

$string_new = substr($string, 0, 14);
echo $string_new;
如果文本之间有html标记,您可能还需要使用
strip\u tags
功能。

substr

看看

像这样的东西应该适合你:

$tags = implode(', ', $the_tags)
echo substr($tags, 0, 14) . (strlen($tags) > 14) ? '..' : '';
substr
将处理仅显示14个字符的问题,然后最后一部分在需要时追加

substr

看看

像这样的东西应该适合你:

$tags = implode(', ', $the_tags)
echo substr($tags, 0, 14) . (strlen($tags) > 14) ? '..' : '';

<代码>子字符串< /代码>将只显示14个字符,最后一部分在需要时追加<代码> ./>代码。

< p> >在中间剪切单词不是很漂亮。
此函数将在词尾之后剪切短语,但不会超过指定的长度

function short($txt,$length)
{
    $txt = trim(strip_tags($txt));
    if(strlen($txt) > $length)
    {
        $txt = substr($txt,0,$length);
        $pos = strrpos($txt, " ");
        $txt = substr($txt,0,$pos);
        $txt .= "...";
    }
    return $txt;
}

但是所有的答案也都是正确的。

< P>这是不太漂亮的。 此函数将在词尾之后剪切短语,但不会超过指定的长度

function short($txt,$length)
{
    $txt = trim(strip_tags($txt));
    if(strlen($txt) > $length)
    {
        $txt = substr($txt,0,$length);
        $pos = strrpos($txt, " ");
        $txt = substr($txt,0,$pos);
        $txt .= "...";
    }
    return $txt;
}

但是之前所有的答案都是正确的。

所有这些答案的问题在于没有明确说明
标签()返回一个HTML链接数组。

运行
substr(内爆(',,get_the_tags(),X)
可能会返回如下结果:

<a href="/tag1/">Tag 1</a>, <a href="/tag2/">Tag 2</a>, <a href="/tag3
<a href="/keyword-tag/">Keyword Tag</a>, <a href="/awesome-keyword/">Awes...</a>

所有这些答案的问题在于,
标签()返回一个HTML链接数组

运行
substr(内爆(',,get_the_tags(),X)
可能会返回如下结果:

<a href="/tag1/">Tag 1</a>, <a href="/tag2/">Tag 2</a>, <a href="/tag3
<a href="/keyword-tag/">Keyword Tag</a>, <a href="/awesome-keyword/">Awes...</a>

这应该真正重建整个
标签链、
获取标签列表链和
获取术语列表链,但这里有一个单一函数的解决方案

它基于WordPress“
获取
wp includes/category template.php
中的\u term\u list
函数

如果未指定修剪长度,则将其交给
标记
。HTML实体被解码,以便字符串计数准确,然后重新编码到输出字符串中

在上一个
标签
过滤器中,我不完全清楚是否需要
$before
$sep
$after
,因此我推迟了WordPress已经在那里做的事情

function the_tags_trimmed( $before = null, $sep = ', ', $after = '', $trim_length = -1, $trim_characters = '...' ) {
    if ( $trim_length < 1 )
        return the_tags( $before, $sep, $after );

    if ( null === $before )
        $before = __('Tags: ');

    $tags = get_the_terms( 0, 'post_tag' );

    if ( empty( $tags ) )
        return false;

    $html_length = 0;
    $x = 0;

    foreach ( $tags as $tag ) {
        $link = get_term_link( $tag, 'post_tag' );
        if ( is_wp_error( $link ) )
            return $link;
        $tag->name = html_entity_decode( $tag->name );
        if ( strlen($tag->name) + $html_length > $trim_length )
            $tag->name = substr( $tag->name, 0, $trim_length - $html_length) . $trim_characters;
        $tag_links[] = '<a href="' . $link . '" rel="tag">' . htmlentities($tag->name) . '</a>';
        $html_length += strlen($tag->name);
        if ( $x++ < count( $tags ) - 1 )
            $html_length += strlen( $sep );

        if ( $html_length >= $trim_length )
            break;
    }

    $tag_links = apply_filters( "term_links-post_tag", $tag_links );
    $tag_list = $before . join( $sep, $tag_links ) . $after;
    echo apply_filters( 'the_tags', $tag_list, $before, $sep, $after );
}
function_-tags_-trimmed($before=null,$sep=',',$after=',$trim_-length=-1,$trim_-characters='…){
如果($trim_长度<1)
返回_标签($before,$sep,$after);
如果(null==$before)
$before=_;('Tags:');
$tags=get_the_terms(0,'post_tag');
if(空($tags))
返回false;
$html_length=0;
$x=0;
foreach($tags作为$tag){
$link=get_term_link($tag,'post_tag');
如果(是错误($link))
返回$link;
$tag->name=html\u entity\u decode($tag->name);
if(strlen($tag->name)+$html\u length>$trim\u length)
$tag->name=substr($tag->name,0,$trim\u length-$html\u length)。$trim\u字符;
$tag_links[]='';
$html_length+=strlen($tag->name);
如果($x++=$trim\u length)
打破
}
$tag\u links=apply\u过滤器(“term\u links-post\u tag”,$tag\u links);
$tag\u list=$before.join($sep,$tag\u links)。$after;
echo apply_过滤器('the_tags'、$tag_list、$before、$sep、$after);
}

这是一个简单的测试,应该可以满足@Thomas的要求。

这应该可以重建整个
标签链、
获取标签列表和
获取术语列表链,但这里有一个单一函数的解决方案

它基于WordPress“
获取
wp includes/category template.php
中的\u term\u list
函数

如果未指定修剪长度,则将其交给
标记
。HTML实体被解码,以便字符串计数准确,然后重新编码到输出字符串中

在上一个
标签
过滤器中,我不完全清楚是否需要
$before
$sep
$after
,因此我推迟了WordPress已经在那里做的事情

function the_tags_trimmed( $before = null, $sep = ', ', $after = '', $trim_length = -1, $trim_characters = '...' ) {
    if ( $trim_length < 1 )
        return the_tags( $before, $sep, $after );

    if ( null === $before )
        $before = __('Tags: ');

    $tags = get_the_terms( 0, 'post_tag' );

    if ( empty( $tags ) )
        return false;

    $html_length = 0;
    $x = 0;

    foreach ( $tags as $tag ) {
        $link = get_term_link( $tag, 'post_tag' );
        if ( is_wp_error( $link ) )
            return $link;
        $tag->name = html_entity_decode( $tag->name );
        if ( strlen($tag->name) + $html_length > $trim_length )
            $tag->name = substr( $tag->name, 0, $trim_length - $html_length) . $trim_characters;
        $tag_links[] = '<a href="' . $link . '" rel="tag">' . htmlentities($tag->name) . '</a>';
        $html_length += strlen($tag->name);
        if ( $x++ < count( $tags ) - 1 )
            $html_length += strlen( $sep );

        if ( $html_length >= $trim_length )
            break;
    }

    $tag_links = apply_filters( "term_links-post_tag", $tag_links );
    $tag_list = $before . join( $sep, $tag_links ) . $after;
    echo apply_filters( 'the_tags', $tag_list, $before, $sep, $after );
}
function_-tags_-trimmed($before=null,$sep=',',$after=',$trim_-length=-1,$trim_-characters='…){
如果($trim_长度<1)
返回_标签($before,$sep,$after);
如果(null==$before)
$before=_;('Tags:');
$tags=get_the_terms(0,'post_tag');
if(空($tags))
返回false;
$html_length=0;
$x=0;
foreach($tags作为$tag){
$link=get_term_link($tag,'post_tag');
如果(是错误($link))
返回$link;
$tag->name=html\u entity\u decode($tag->name);
if(strlen($tag->name)+$html\u length>$trim\u length)
$tag->name=substr($tag->name,0,$trim\u length-$html\u length)。$trim\u字符;
$tag_links[]='';
$html_length+=strlen($tag->name);
如果($x++