限制字符串长度

Bel*_*ish 52 php string

我正在寻找一种方法来限制php中的字符串,如果字符串太长,最后添加...

bra*_*amp 124

您可以使用类似下面的内容:

if (strlen($str) > 10)
   $str = substr($str, 0, 7) . '...';
Run Code Online (Sandbox Code Playgroud)

  • 为了获得UTF-8字符的子字符串,我强烈推荐使用mb_substr - >`mb_substr($ utf8string,0,5,'UTF-8');`这样可以避免错误的切片长度. (4认同)
  • 我猜你并不认为他可能会跳过家庭作业的阅读作业。 (2认同)
  • 这只是一个社区规则:http://meta.stackexchange.com/questions/10811/how-to-ask-and-answer-homework-questions (2认同)

Sar*_*lai 21

php 4.0.6开始,有一个完全相同的功能

function mb _ strimwidth可以用于您的要求

<?php
echo mb_strimwidth("Hello World", 0, 10, "...");
//Hello W...
?>
Run Code Online (Sandbox Code Playgroud)

它确实有更多选项,这里是这个mb_strimwidth的文档

  • @CyrilJacquart最好避免在没有必要的地方使用正则表达式. (2认同)

Sev*_*Sev 6

wordwrap()如果你不想分割单词,你可以使用该函数然后在换行符上爆炸并取第一部分.

$str = 'Stack Overflow is as frictionless and painless to use as we could make it.';
$str = wordwrap($str, 28);
$str = explode("\n", $str);
$str = $str[0] . '...';
Run Code Online (Sandbox Code Playgroud)

资料来源:https://stackoverflow.com/a/1104329/1060423

如果你不关心分词,那么只需使用php substr函数.

echo substr($str, 0, 28) . '...';
Run Code Online (Sandbox Code Playgroud)


Nae*_*jaz 6

第二个参数是从哪里开始字符串和第三个参数你需要显示多少个字符

$title = "This is for testing string for get limit of string This is for testing string for get limit of string This is for testing string for get limit of string This is for testing string for get limit of string";
    echo substr($title,0,50);
Run Code Online (Sandbox Code Playgroud)


War*_*ula 5

 $string = (strlen($string) > 13) ? substr($string,0,10).'...' : $string;
Run Code Online (Sandbox Code Playgroud)

或者作为函数:

function truncate($string, $length, $dots = "...") {
    return (strlen($string) > $length) ? substr($string, 0, $length - strlen($dots)) . $dots : $string;
}
Run Code Online (Sandbox Code Playgroud)

自从我写这个答案已经有一段时间了,我实际上不再使用这个代码了。我更喜欢这个函数,它可以防止使用以下函数破坏单词中间的字符串wordwrap

function truncate($string,$length=100,$append="&hellip;") {
$string = trim($string);

  if(strlen($string) > $length) {
    $string = wordwrap($string, $length);
    $string = explode("\n", $string, 2);
    $string = $string[0] . $append;
  }

  return $string;
}
Run Code Online (Sandbox Code Playgroud)