如何在PHP中获得字符串的前n个字符?什么是最快的方法来修剪一个字符串到特定的字符数,并添加'…如果需要的话?
当前回答
这个解决方案不会删减单词,它会在第一个空格后加三个点。 我编辑了@Raccoon29解决方案,我用mb_函数替换了所有函数,以便这将适用于所有语言,如阿拉伯语
function cut_string($str, $n_chars, $crop_str = '...') {
$buff = strip_tags($str);
if (mb_strlen($buff) > $n_chars) {
$cut_index = mb_strpos($buff, ' ', $n_chars);
$buff = mb_substr($buff, 0, ($cut_index === false ? $n_chars : $cut_index + 1), "UTF-8") . $crop_str;
}
return $buff;
}
其他回答
if(strlen($text) > 10)
$text = substr($text,0,10) . "...";
最好像这样抽象你的代码(注意限制是可选的,默认为10):
print limit($string);
function limit($var, $limit=10)
{
if ( strlen($var) > $limit )
{
return substr($string, 0, $limit) . '...';
}
else
{
return $var;
}
}
从4.0.6版开始,PHP就内置了这个功能。去看医生。
echo mb_strimwidth('Hello World', 0, 10, '...');
// outputs Hello W...
注意trimmarker(上面的省略号)包含在截断的长度中。
Substr()是最好的,你还需要先检查字符串的长度
$str = 'someLongString';
$max = 7;
if(strlen($str) > $max) {
$str = substr($str, 0, $max) . '...';
}
Wordwrap不会修剪字符串,只是分割它…
这个函数可以在中间不中断单词的情况下完成工作
function str_trim($str,$char_no){
if(strlen($str)<=$char_no)
return $str;
else{
$all_words=explode(" ",$str);
$out_str='';
foreach ($all_words as $word) {
$temp_str=($out_str=='')?$word:$out_str.' '.$word;
if(strlen($temp_str)>$char_no-3)//-3 for 3 dots
return $out_str."...";
$out_str=$temp_str;
}
}
}
推荐文章
- 如何实现一个好的脏话过滤器?
- PHP中的三个点(…)是什么意思?
- Guzzlehttp -如何从guzzle6得到响应的正文?
- 移动一个文件到服务器上的另一个文件夹
- Laravel中使用雄辩的ORM进行批量插入
- PHP 5.4调用时引用传递-容易修复可用吗?
- c#:如何获得一个字符串的第一个字符?
- String类中的什么方法只返回前N个字符?
- 格式化字节到千字节,兆字节,千兆字节
- 我可以将c#字符串值转换为转义字符串文字吗?
- 如何在PHP中获得变量名作为字符串?
- 在c#中解析字符串为日期时间
- 字符串中的单词大写
- 用“+”(数组联合运算符)合并两个数组如何工作?
- Laravel PHP命令未找到