我在标题中回显用户的第一个名字。我有一个带有很多字符的测试名字。 例如:
$firstname = "asdfasdfasdfjkljldkafjsddfjakdsjflaksjdfl"
我正在做
<?php $first_name = character_limiter($first_name, 10);
echo $firstname;?>
但它没有用。它显示所有字符(asdfasdfasdfjkljldkafjsddfjakdsjflaksjdfl
),而不是前10个字符。
我只想看到前十名的追逐者。我该如何解决这个问题?
答案 0 :(得分: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)所必需的。 / p>
您可以通过在 application / config / autoload.php 中指定Text Helper来加载Text Helper:
$autoload['helper'] = array('text');
或者通过在这样的Controller函数中专门加载它:
$this->load->helper('text');
更新:
Codeigniter维护&#34; 单词的完整性,因此字符数可能略多于或少于您指定的内容&#34; (参考 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试图保持字的完整性,所以它不会破坏最后一个字。
如果你需要严格限制输入字符串,那么你必须使用 Hudixt 所描述的内置php函数 substr()。
答案 1 :(得分: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;
?>
希望这有助于你
答案 2 :(得分:0)
试试这个,它会解决您的问题。
$this->load->helper('text');
$string = "your text here";
$string = character_limiter($string, 10);
echo $string;
输出:你的文字......
答案 3 :(得分:0)
是character_limiter()
函数不适用于较长的单词以防止断字和/或扭曲含义。
根据codeigniter文档,它不会试图打破长字来维护其完整性。
根据文件
character_limiter
将字符串截断为指定的字符数。它保持单词的完整性,因此字符数可能略多于或少于您指定的数量。
但是,codeigniter并不会阻止你限制确切的字符,而是在注释中提到
如果您需要截断到确切的字符数,请参阅下面的ellipsize()函数。
因此您可以使用character_limiter()
功能代替ellipsize()
,而且它会完全相同。
希望有所帮助。