【问题标题】:php truncate string if longer than limit and put some omission at the end..similar to rubyphp 如果超过限制,则截断字符串并在末尾省略一些..类似于 ruby
【发布时间】:2012-06-10 10:00:52
【问题描述】:

我在最近的 php 代码中多次需要这个功能,所以我正在寻找一个函数来完成这项工作,如果有的话..

如果字符串大于限制,则截断它并添加一些省略文本,例如...(continued)..

和 ruby​​ 一样,我们对字符串有 truncate 函数

"And they found that many people were sleeping better.".truncate(25, :omission => "... (continued)")

我可以通过首先检查长度是否超过..然后修剪,然后连接...但我正在寻找一些类似的功能..

【问题讨论】:

  • 我认为 php 标准库中没有等价物,但正如您所说,您可以轻松编写自己的函数来做到这一点。

标签: php ruby-on-rails string concatenation trim


【解决方案1】:
function truncate($string,$length=100,$appendStr="..."){
    $truncated_str = "";
    $useAppendStr = (strlen($string) > intval($length))? true:false;
    $truncated_str = substr($string,0,$length);
    $truncated_str .= ($useAppendStr)? $appendStr:"";
    return $truncated_str;
}

您甚至可以编辑该函数,以便您可以选择以确切的最大长度剪切或尊重单词边界...
选择基本上是你的

【讨论】:

    【解决方案2】:
    function substr_with_ellipsis($string, $chars = 100)
    {
        preg_match('/^.{0,' . $chars. '}(?:.*?)\b/iu', $string, $matches);
        $new_string = $matches[0];
        return ($new_string === $string) ? $string : $new_string . '…';
    }
    

    【讨论】:

      【解决方案3】:
      class StringHelper
      {
      
          public static function truncate($string, $length = 100, $append = "...")
          {
              if (strlen($string) <= intval($length)) {
                  return $string;
              }
      
              return substr($string, 0, $length) . $append;
          }
      
      }
      

      我在 Yii 框架中使用的用于截断的静态通用方法。

      【讨论】:

      • 只有代码的答案是不受欢迎的。请解释你在这里做了什么。
      【解决方案4】:

      基于@OkekeEmmanuelOluchu's answer。有点短和干净:

      function truncateString($string, $length = 100, $append = "..."){
          $truncated_str = substr($string, 0, $length);
          $truncated_str .= strlen($string) > intval($length) ? $append : "";
          return $truncated_str;
      }
      

      【讨论】:

        猜你喜欢
        • 2023-03-27
        • 2021-02-10
        • 2021-10-24
        • 2016-05-27
        • 2021-05-19
        • 2019-04-20
        • 2017-06-23
        • 2011-07-18
        • 2015-03-11
        相关资源
        最近更新 更多