如何在PHP中剪切一定数量的字符后的文本?

2022-08-30 18:42:13

我有两个字符串,我想限制为例如前25个字符。有没有办法在第25个字符之后剪切文本并添加一个...到字符串的末尾?

因此,'12345678901234567890abcdefg'将变成'12345678901234567890abcde...'其中“fg”被切断。


答案 1

我可以对 pallan 的代码进行修改吗?

$truncated = (strlen($string) > 20) ? substr($string, 0, 20) . '...' : $string;

这不会添加“...”。如果它更短。


答案 2

为了避免在单词的中间切入,您可能需要尝试单词包装功能;我想,这样的事情可以做到:

$str = "this is a long string that should be cut in the middle of the first 'that'";
$wrapped = wordwrap($str, 25);
var_dump($wrapped);

$lines = explode("\n", $wrapped);
var_dump($lines);

$new_str = $lines[0] . '...';
var_dump($new_str);

$wrapped将包含:

string 'this is a long string
that should be cut in the
middle of the first
'that'' (length=74)

数组将如下所示:$lines

array
  0 => string 'this is a long string' (length=21)
  1 => string 'that should be cut in the' (length=25)
  2 => string 'middle of the first' (length=19)
  3 => string ''that'' (length=6)

最后,您的:$new_string

string 'this is a long string' (length=21)


使用子字符串,如下所示:

var_dump(substr($str, 0, 25) . '...');

你会得到:

string 'this is a long string tha...' (length=28)

这看起来不是那么好:-(


不过,玩得开心!


推荐