2015-02-23 28 views
0

我在標題中回顯用戶的名字。我有很多人物的測試名字。 對於如:Codeigniter - 字符限制器不工作

$firstname = "asdfasdfasdfjkljldkafjsddfjakdsjflaksjdfl" 

我做

<?php $first_name = character_limiter($first_name, 10); 
echo $firstname;?> 

,但它不工作。它顯示所有字符(asdfasdfasdfjkljldkafjsddfjakdsjflaksjdfl)而不是前10個字符。

我只想看到前10個字符。我怎樣才能解決這個問題?

+0

僅供參考:http://cxzcxz.com/xref/codeigniter-1.7.1/nav.html?_functions/index.html - 所以,只需使用['substr'](http://php.net/ substr)如果這是你真正想要的。 – mario 2015-02-23 02:27:43

回答

0

你也可以使用substr()來達到這個目的。如果你想在10個字符之後加上......那麼請藉助strlen()。使用下面

<?php 
if(strlen($first_name)>10){ 
$first_name = substr($first_name,0, 10)."..."; 
} 
else{ 
$first_name = substr($first_name,0, 10); 
} 
    echo $first_name; 
?> 

希望這段代碼可以幫助您

+0

爲什麼downvote?這個功能很容易完成這個任務 – 2015-02-23 02:32:02

+0

我不是downvoter,但你的代碼顯然不工作(包含錯字) – Raptor 2015-02-23 02:48:54

+0

這個工程。如何在此之後添加一個省略號?例如。如果超過5個字母,它會顯示「akdsj ...」而不是「akdsjdksjfsaldf」? – 2015-02-23 22:05:28

2

使用$firstname作爲第一個參數,而不是$first_name(最初不包含任何內容),而使用character_limiter()功能

$firstname = "asdfasdfasdfjkljldkafjsddfjakdsjflaksjdfl"; 
$first_name = character_limiter($firstname, 10); // limits $firstname to 10 chars and outputs to $first_name 
echo $first_name; 

在這是一個錯字情況錯誤,當你發佈你的問題,然後問題可能是加載文字助手 Codeigniter這是使用此功能所需的(CI Text Helper)。通過在控制器的功能,特別是加載像這樣

$autoload['helper'] = array('text'); 

或者:

可以通過指定它在的application/config/autoload.php加載文本助手這樣

$this->load->helper('text'); 

更新:

Codeigniter維護「字的完整性,因此字符數可能稍多或少,那麼你指定「(ref。CI Text Helper

讓我用一個例子來解釋你:

$firstname = "asdfasdfasdfjkljldkafjsddfjakdsjflaksjdfl"; //contains only single word 
$first_name = character_limiter($firstname, 10); 

這裏,CI試圖限制$firstname到10個字符,但因爲它遇到一個詞,它不會試圖打破它,而不是它輸出直到單詞的結尾。

現在說你曾使用過,

$firstname = "asdfa sdfasdfj kljldkafjsddfjakdsjflaksjdfl sdjbfsdufb"; 

這包含三個的話,那麼輸出將是asdfa sdfasdfj ...

注意的是,這裏太有限字符串包含超過10個字符,但由於CI試圖保持單詞的完整性,但並沒有打破硬道理。

如果需要嚴格限制的字符輸入字符串,那麼,你就必須使用內置的PHP函數SUBSTR()Hudixt描述。

+0

嗨,這是一個錯字,它仍然無法正常工作,因爲我有文本助手自動加載。 :( – 2015-02-23 12:46:31

+0

@TaylorSwift檢查更新的答案:) – Deepak 2015-02-23 13:28:09

+0

非常感謝。我已經完成了「substr()」方法,所以它看起來像這樣:<?php $ first_name = substr($ first_name,0,5); ?>'。如何在5個字符後添加省略號? – 2015-02-23 22:09:26

0

試試這個,它會解決你的問題。

$this->load->helper('text'); 
    $string = "your text here"; 
    $string = character_limiter($string, 10); 
    echo $string; 

輸出:你的文字...

+0

我確實有文本幫助程序,它仍然不能正常工作。 – 2015-02-23 12:46:03

+0

@TaylorSwift試試這個, $ this-> load-> helper('text'); \t \t $ string =「你的文字在這裏」; \t \t $ string = character_limiter($ string,10); \t \t echo $ string; 輸出:你的文本... – Raham 2015-02-24 05:26:36

+0

@ TaylorSwift,我也編輯上面的代碼,你也可以使用上面的代碼。 – Raham 2015-02-24 05:29:50

0

character_limiter()功能不適用於長字工作,以防止破字和/或扭曲的意義。根據codeigniter文檔,它不會試圖打破長詞保持其完整性。 作爲每 character_limiter

文檔截斷的字符串指定的字符數。它保持單詞的完整性,因此字符數可能比您指定的稍多或少一些。

但笨不會阻止你限制確切性質,它前面提到的音符

如果需要截斷字符請參閱下面的ellipsize()函數的一個確切的數字。

因此,而不是character_limiter()您可以使用ellipsize()功能,它將完全相同。

希望它有幫助。