2017-09-26 11 views
0

그래서이 문자열은 너무 길어서 보고서에 넣을 수 없습니다. 내 보고서는 36자를 사용해야합니다. 하지만 내 문자열 값은 그 이상 : 당신이 얻을 것이다, 그래서에만 36 문자를받을 경우문자가 아닌 단어를 검색하는 PHP 하위 문자열 (substr)

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

: "빠른 갈색 여우는 리터 위로 이동"하지만 난 단어로 문장을 나눌 아니 문자로, 그래서 그에서 2 변수를 만들고 싶습니다

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

나는 그것을 어떻게합니까 ???

+0

str_word_count 배열을 포함 할 것이다; 아마도 –

답변

3

여기서 wordwrap()을 사용해야합니다. 이 시도 :

echo substr($value, 0, strpos(wordwrap($value, 36), "\n")); 
0
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); 
0

이 코드는 단어에 의해 단어를 addding 및 제한에 대한 모든 시간을 확인, 주어진 문자열에서 작동합니다.

$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 
0

이렇게하면 도움이 될 것입니다. 결과) (문자열 청크를

$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