2012-02-19 28 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個或更多字符的字符串中。

我希望它有幫助!