如何在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;
}
其他回答
//The simple version for 10 Characters from the beginning of the string
$string = substr($string,0,10).'...';
更新:
基于检查长度的建议(也确保修剪和未修剪的字符串长度相似):
$string = (strlen($string) > 13) ? substr($string,0,10).'...' : $string;
所以你会得到一个最多13个字符的字符串;13个(或更少)普通字符或10个字符后跟“…”
更新2:
或作为函数:
function truncate($string, $length, $dots = "...") {
return (strlen($string) > $length) ? substr($string, 0, $length - strlen($dots)) . $dots : $string;
}
更新3:
我写这个答案已经有一段时间了,实际上我不再使用这段代码了。我更喜欢这个函数,它可以防止使用wordwrap函数打断单词中间的字符串:
function truncate($string,$length=100,$append="…") {
$string = trim($string);
if(strlen($string) > $length) {
$string = wordwrap($string, $length);
$string = explode("\n", $string, 2);
$string = $string[0] . $append;
}
return $string;
}
我使用的函数是:
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;
有时候,你需要将字符串限制到最后一个完整的单词ie:你不希望最后一个单词被打断,而是终止于最后一个单词的第二个。
例如: 我们需要将“This is my String”限制为6个字符,但不是“This i…”,我们希望它是“This…”,即我们将跳过最后一个单词中的破碎字母。
唷,我不擅长解释,这是代码。
class Fun {
public function limit_text($text, $len) {
if (strlen($text) < $len) {
return $text;
}
$text_words = explode(' ', $text);
$out = null;
foreach ($text_words as $word) {
if ((strlen($word) > $len) && $out == null) {
return substr($word, 0, $len) . "...";
}
if ((strlen($out) + strlen($word)) > $len) {
return $out . "...";
}
$out.=" " . $word;
}
return $out;
}
}
if(strlen($text) > 10)
$text = substr($text,0,10) . "...";
推荐文章
- 使用PHP获取客户端IP地址
- 删除字符串中的字符列表
- 在Java中转换float为String和String为float
- 获取PHP中的URL参数
- 致命错误:类“ZipArchive”未在
- 设置cookie永不过期
- '<是什么?=' PHP中的意思?
- PHP中的echo和print有什么不同?
- 我如何使用Guzzle发送一个POST请求JSON?
- 使用Pandas为字符串列中的每个值添加字符串前缀
- 我如何能匹配一个字符串与正则表达式在Bash?
- 如何POST JSON数据与PHP卷曲?
- 在PHP中使用getter和setter而不是函数或简单的公共字段有什么优点?
- 非加密用途的最快哈希?
- 将变量传递到下一页