2015-05-22 35 views
0

我有幾個變量的設置,例如:將每個變量爲一個字符串,如果它不超過x字符

$url = 'http://stackoverflow.com'; 
$tag1 = '#lorem1'; 
$tag2 = '#lorem2'; 
$tag3 = '#lorem3'; 
$tag4 = '#lorem4'; 
$tag5 = '#lorem5'; 

我希望把它們放在一起爲一個字符串。事情是這樣的:

$final = $url .' '. $tag1 .' '. $tag2... 

但是,如果$final字符串將超過140個字符,那麼不添加變量。

例如,如果$final字符串爲137個字符,則不要將$tag5添加到連接的變量字符串中,因爲它的值會超過140個字符。

我該怎麼做?

回答

2

你必須這樣編寫一個簡單的循環:

$str = ''; 
foreach($parts as $part) 
{ 
    if(strlen($str.$part) >= 140) 
    { 
     break; 
    } 
    $str .= $part; 
} 
return $str; 

這是非常國際海事組織做到這一點的唯一方法。

+0

你必須把你的「標籤」成這樣的數組工作 –

+0

爲了證實,我需要把名爲$部分陣列中的所有變量,爲了這個工作? –

+0

如果你想使用我的代碼,是的! –

0

假設你製作了$ array_name_str,它存儲了你提到的所有字符串。

$nb_input = 0; 
$final_str = ''; 

foreach($array_name_str ad $row) 
{ 
    $length_curr_str = strlen($row); 
    if($length_curr_str > (140 - $nb_input)) 
     break; 

    // We add the curr string 
    $final_str .= $row; 
    $final_str .= " "; 

    // Updating size of output str 
    $nb_input += $length_curr_str; 
} 
return $final_str; 
0

這裏有限制選項,可以隨時用任何條件;

function to_tag(array $tags, $limit = 140) { 
    $str = ''; 
    foreach ($tags as $tag) { 
     $str .= ' '. trim($tag); 
     if (strlen($str) > $limit) { 
      $str = substr($str, 0, strrpos($str, ' ')); 
      break; 
     } 
    } 

    return trim($str); 
} 

print_r(to_tag(['foo1', 'foo2', 'foo3'], 10)); // foo1 foo2 
相關問題