如何在PHP中获得字符串的前n个字符?什么是最快的方法来修剪一个字符串到特定的字符数,并添加'…如果需要的话?
当前回答
从4.0.6版开始,PHP就内置了这个功能。去看医生。
echo mb_strimwidth('Hello World', 0, 10, '...');
// outputs Hello W...
注意trimmarker(上面的省略号)包含在截断的长度中。
其他回答
$width = 10;
$a = preg_replace ("~^(.{{$width}})(.+)~", '\\1…', $a);
或者使用wordwrap
$a = preg_replace ("~^(.{1,${width}}\b)(.+)~", '\\1…', $a);
我使用的函数是:
function cutAfter($string, $len = 30, $append = '...') {
return (strlen($string) > $len) ?
substr($string, 0, $len - strlen($append)) . $append :
$string;
}
看到它的行动。
$yourString = "bla blaaa bla blllla bla bla";
$out = "";
if(strlen($yourString) > 22) {
while(strlen($yourString) > 22) {
$pos = strrpos($yourString, " ");
if($pos !== false && $pos <= 22) {
$out = substr($yourString,0,$pos);
break;
} else {
$yourString = substr($yourString,0,$pos);
continue;
}
}
} else {
$out = $yourString;
}
echo "Output String: ".$out;
使用子串
http://php.net/manual/en/function.substr.php
$foo = substr("abcde",0, 3) . "...";
如果你想要切割,小心不要分割单词,你可以做下面的事情
function ellipse($str,$n_chars,$crop_str=' [...]')
{
$buff=strip_tags($str);
if(strlen($buff) > $n_chars)
{
$cut_index=strpos($buff,' ',$n_chars);
$buff=substr($buff,0,($cut_index===false? $n_chars: $cut_index+1)).$crop_str;
}
return $buff;
}
如果$str比$n_chars短,则原形返回。
如果$str等于$n_chars也会返回它。
如果$str比$n_chars长,那么它会寻找下一个空格来切割,或者(如果直到最后没有更多的空格)$str会在$n_chars被粗鲁地切割。
注意:注意此方法将删除HTML中的所有标记。
推荐文章
- Printf与std::字符串?
- 不区分大小写的“in”
- 原则-如何打印出真正的sql,而不仅仅是准备好的语句?
- 如何从关联PHP数组中获得第一项?
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- PHP/MySQL插入一行然后获取id
- 我如何排序一个多维数组在PHP
- 如何在PHP中截断字符串最接近于一定数量的字符?
- PHP错误:“zip扩展名和unzip命令都没有,跳过。”
- Nginx提供下载。php文件,而不是执行它们
- Json_encode()转义正斜杠
- 如何在PHP中捕获cURL错误
- Ruby数组到字符串的转换
- 为什么在Java和。net中不能修改字符串?
- 如何要求一个分叉与作曲家?