【问题标题】:php substring (substr) to detect words not characterphp substring (substr) 检测单词不是字符
【发布时间】:2017-09-26 06:36:08
【问题描述】:

所以我有这个字符串,因为它太长而无法放入我的报告中。我的报告应该只使用 36 个字符。但我的字符串值不止于此:

$value = "The quick brown fox jumps over the lazy dog" //43 character

如果只获得 36 个字符,那么您将获得:“快速棕色狐狸跳过 l” 但我想用单词而不是字符来划分句子,所以我想从中制作 2 个变量

$var1 = "The quick brown fox jumps over the" //instead of The quick brown fox jumps over the l
$var2 = "lazy dog"

我该怎么做???

【问题讨论】:

  • str_word_count();也许

标签: php string substring strlen


【解决方案1】:

您需要在这里使用wordwrap()。试试这个:

echo substr($value, 0, strpos(wordwrap($value, 36), "\n"));

【讨论】:

    【解决方案2】:
    function limit_text($text, $limit) {
          if (str_word_count($text, 0) > $limit) {
              $words = str_word_count($text, 2);
              $pos = array_keys($words);
              $text = substr($text, 0, $pos[$limit]) . '...';
          }
          return $text;
        }
    
    echo limit_text('The quick brown fox jumps over the lazy dog', 5);
    

    【讨论】:

      【解决方案3】:

      此代码将适用于任何给定的字符串,逐字添加并检查每次限制。

       $var1=""; $var2="";
       $value="your string";
       while ($var1.strlen<36) {
          $n=strpos($value, " "); //length of first word
          if (($var1.strlen +$n)<36) {
             $var1=$var1+substr($value, 0, $n);//from beginning of value till the first 'space' char
             $value = substr($value, $n); //removing first word
           }
       }
       $var2=$value;//the remmaining is what is left for second row
      

      【讨论】:

        【解决方案4】:

        这可能会对您有所帮助。结果将是包含字符串块的数组

        $value = "The quick brown fox jumps over the lazy dog";
        $arr = explode(" ",$value);
        $str_arr = array();
        $str = $arr[0];
        $char_limit = 36;
        foreach($arr as $key=>$value)
        {
            $tmp_str = isset($arr[$key + 1])?$arr[$key + 1]:"";
            if(strlen($str." ".$tmp_str) <= $char_limit)
            {
                $str.=" ".$tmp_str;
            }
            else
            {
                $str_arr[]=$str;
                $str=$tmp_str;
            }
        
        }
        $str_arr[]=$str;
        print_r ($str_arr);
        

        DEMO

        【讨论】:

          猜你喜欢
          • 2010-11-17
          • 2010-12-12
          • 1970-01-01
          • 2012-12-12
          • 2011-11-07
          • 1970-01-01
          • 1970-01-01
          • 2018-08-13
          相关资源
          最近更新 更多