【问题标题】:Dividing a string into 3 parts with keeping words intact在保持单词完整的情况下将字符串分成 3 部分
【发布时间】:2012-05-04 12:05:42
【问题描述】:

假设我有 150 个字符长的字符串。我想把它分成 3 个部分,每个部分最多 50 个字符。诀窍是在将字符串分成 3 部分时,我还必须保持单词完整。

我可以使用substr 并检查它是否将单词切成两半。我想知道是否有其他优雅的方法可以做到这一点。

我还必须记住,字符串可能少于 150 个字符。例如,如果它是 140 个字符,那么它应该是 50 + 50 + 40。

如果小于 100,则应为 50 + 50。如果小于或等于 50 个字符,则不应分割字符串。

我很高兴听到您的想法/解决方法。

提前感谢您的时间和关注。

【问题讨论】:

标签: php regex string substr


【解决方案1】:

听起来你只想要 php 函数wordwrap()

字符串自动换行(字符串$str[,int$width=75[,字符串$break=“\n”[,bool$cut=false]]])

使用字符串分隔符将字符串换成给定数量的字符。

【讨论】:

  • 那是一个很快的,我不知道为什么我错过了。非常感谢。
【解决方案2】:

我不认为这在性能方面是最好的解决方案,但它有点

$text = 'Lorem te...';
$strings = array(0=>'');
$string_size = 50;
$ci = 0;
$current_len = 0;
foreach( explode(' ', $text) as $word ) {
  $word_len = strlen($word) + 1;
  if( ($current_len + $word_len) > ($string_size - 1) )
    $strings[$ci] = rtrim( $strings[$ci] );
    $ci++;
    $current_len = 0;
    $strings[$ci] = '';
  }

  $strings[$ci] .= $word.' '; 
  $current_len = $current_len + $word_len;
}

【讨论】:

  • 这或多或少是我在看到 AD7six 解决方案之前所拥有的。
  • 感谢您的关注。看来wordwrap() 是最优雅的方式。
  • 啊,是的,自动换行似乎是完美的解决方案!
猜你喜欢
  • 1970-01-01
  • 2011-06-20
  • 2014-10-28
  • 1970-01-01
  • 2013-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-07
相关资源
最近更新 更多