使用strlen限制字符

时间:2012-02-19 19:27:56

标签: php joomla substr if-statement

我试图限制标题中出现的字符数。

不确定我在这里做错了什么(我是新手!),但标题显示全长,并且'...'没有出现。

非常感谢任何帮助!

<? if ($params->get('itemid')) $itemid = '&Itemid='.$params->get('itemid'); else $itemid = ''; ?>
<? $title = $event->title ?>
<? $title = substr($title, 0, 20); ?>
<? if (strlen($title) == 20) $title .= '...' ; ?>
<? if (KRequest::get('get.view', 'string') == 'events' || isset($module)) : ?>
    <h1 class="title" itemprop="name">
        <a href="<?=@route('option=joomla_component&view=event&id='.$event->id.$itemid)?>" itemprop="url"><?=$event->title?></a>
    </h1>
<? endif ?>

3 个答案:

答案 0 :(得分:2)

你不应该在输出中使用$ title而不是$ event-&gt; title?

答案 1 :(得分:1)

见2条评论。它应该使它工作。

    <? 
    if ( $params->get('itemid') ) {
        $itemid = '&Itemid='. $params->get('itemid'); 
    else 
        $itemid = ''; 
    $title = $event->title; 
    if ( strlen( $title ) > 20 ) $title = substr( $title, 0, 17).'...';  // Need to add a substr
    if ( KRequest::get('get.view', 'string') == 'events' || isset( $module ) ) : ?>     
        <h1 class="title" itemprop="name">
            <a href="<?=@route('option=joomla_component&view=event&id='.$event->id.$itemid)?>" 
                itemprop="url">
                <?= $title; // note the change here ?>
            </a>
       </h1> 
    <? endif ?>

答案 2 :(得分:1)

我不确定这是否会回答你的问题,但也许你应该试试这段代码:

<?php
if ( $params->get( 'itemid' ) ) {
    $itemid = '&Itemid='.$params->get('itemid');
} else {
    $itemid = '';
}
$title = $event->title;
if ( strlen( $title ) >= 20 ) {
    $title = substr( $title, 0, 20 );
    $title .= '...';
}
if ( KRequest::get( 'get.view', 'string' ) == 'events' || isset( $module ) ) :
?>
<h1 class="title" itemprop="name">
    <a href="<?= @route( 'option=joomla_component&view=event&id=' . $event->id . $itemid ) ?>" itemprop="url"><?= $title ?></a>
</h1>
<?php
endif;
?>

主要问题是您正在转换$ title变量并显示$ event-&gt; title变量。此外,你正在寻找一个EXACT长度为20的字符串来添加“...”,但是你应该将它添加到任何包含20个或更多字符的字符串中。

我希望它有所帮助!