【问题标题】:PHP have string 200 characters long and then cut off at last white space [duplicate]PHP有200个字符长的字符串,然后在最后一个空格处被切断[重复]
【发布时间】:2014-06-26 01:13:08
【问题描述】:

我正在处理这段代码,它将获取我的字符串并使其长度为 200 个字符,然后删除最后一个空格,这样我的字符串将看起来像这样 'This is my' 而不是 'This is my stri '

这是我目前得到的:

$description = substr($value['description'], 0, 200);

现在我希望它删除字符串中的最后一个空格。谷歌搜索后,我发现的只是 php trim 功能,但没有删除最后一个,只是所有..

有什么建议吗?

【问题讨论】:

  • 但是This is my stri末尾没有空格,你打算去掉最后一个striword吗?
  • @AlanChavez:那不是这个的副本。
  • 嗨 KraneBird,是的,这正是我要找的。​​span>
  • @user3557464:你能用一些输入和它们的预期输出来编辑问题吗?

标签: php string


【解决方案1】:
 function mycoolstring($longstring)
      {
          $stringarray=array();
          if(strlen($longstring)>=200){
          $stringarray=explode(" ",substr($longstring,0,200));
          }
          else{
          $stringarray=explode(" ",$longstring);
          }
          $output=stringarray[0];
          for($i=1;$i<count($stringarray)-1;$i++;
             {
                $output.=" " . $stringarray[$i];
             }
          return $output;
      }
  echo mycoolstring($value['discription']);

这可能是一个奇怪的逻辑,但它应该有效。任何人看到错误请告诉我或编辑它。 :)

【讨论】:

    【解决方案2】:

    如果你想让它的长度为 200 个字符,但如果你不希望最后一个词只是部分,它应该是这样的:

    <?php
       mb_internal_encoding('UTF-8');
    
       $value['description'] = 'avbd wreiuui ewrwrewre';
    
       $desiredLength = 8; 
    
       if (mb_strlen($value['description']) <=  $desiredLength) {
         $description = $value['description'];           
       }
       else {       
         $description = mb_substr($value['description'], 0, mb_strpos($value['description'],' ',$desiredLength-1));
       }
    
    
       echo $description."<br />";
    

    【讨论】:

      【解决方案3】:
      function firstXChars($string, $chars = 100)  { 
          preg_match('/^.{0,' . $chars. '}(?:.*?)\b/iu', $string, $matches); 
          return $matches[0]; 
      } 
      
      
      echo firstXChars($value['description'], 200);
      

      Demo

      【讨论】:

      • 有点好奇反对票。这会在单词末尾拆分字符串,末尾没有空格。这只是因为人们不喜欢这个问题而投反对票吗?还是不喜欢高代表用户回答?
      • (免责声明:我没有对这个答案投票。)但我认为这绝对更好:if (strlen($string) &gt; 200) { echo substr($string, 0, strrpos(substr($string, 0, 200), ' ')); }
      • 仅供参考,仅代码答案通常会自动标记为低质量。这也可能是投反对票的原因。添加几句话来解释你的答案将解决这两个问题。
      • @AD7six:我知道某处有重复,所以我没有回答。现在找到了。在另一个线程上看到exact same solution 有点惊讶。现在投票结束作为骗子:-)
      猜你喜欢
      • 1970-01-01
      • 2015-04-14
      • 1970-01-01
      • 1970-01-01
      • 2021-07-07
      • 1970-01-01
      • 2022-06-18
      • 1970-01-01
      • 2023-03-10
      相关资源
      最近更新 更多