2012-02-19 30 views
0

我试图限制出现在标题中的字符数。使用strlen限制字符

不知道我在做什么错在这里(我是新手!),但标题显示全长,'...'不出现。

任何帮助非常感谢!

<? 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="<[email protected]('option=joomla_component&view=event&id='.$event->id.$itemid)?>" itemprop="url"><?=$event->title?></a> 
    </h1> 
<? endif ?> 
+7

有什么问题?为什么新用户永远不会写出什么问题 – dynamic 2012-02-19 19:30:21

+2

您不必在''标签中包装*每行*。它只是使代码完全不可读。 – JJJ 2012-02-19 19:32:47

+0

你会得到什么错误?你编辑的代码似乎是正确的 – 2012-02-19 19:34:22

回答

2

您不应该在输出中使用$ title而不是$ event-> title吗?

+0

换句话说,您只是使用错误的变量在读取... itemprop =“url”>标题... – fred2 2012-02-19 19:38:51

+0

是的,你是正确的....应该是$ title – 2012-02-19 19:40:45

+0

我是个白痴。谢谢! – Sarah 2012-02-19 19:41:15

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="<[email protected]('option=joomla_component&view=event&id='.$event->id.$itemid)?>" 
       itemprop="url"> 
       <?= $title; // note the change here ?> 
      </a> 
     </h1> 
    <? endif ?> 
+0

我不明白为什么这是一个被接受的答案?如果您查看代码,将永远不会添加...,但所有标题将被截断为20个字符。 '$ title = substr($ title,0,20);'行应该被移除或者'if(strlen($ title)> 20)'永远不会成立。 – 2012-02-19 20:06:46

+0

我原本没有看到substr在那里。我补充说,完全错过了她在上面的线上。我修好了它。 – phpmeh 2012-02-19 20:09:15

+0

您也应该将'substr($ title,0,17)'改为'substr($ title,0,20)'。 – 2012-02-19 20:10:42

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-> title变量。此外,您正在查找长度为20的字符串以添加“...”,但您应该将其添加到任何具有20个或更多字符的字符串中。

我希望它有帮助!