将每个变量为一个字符串,如果它不超过x字符

问题描述:

我有几个变量的设置,例如:将每个变量为一个字符串,如果它不超过x字符

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

我希望把它们放在一起为一个字符串。事情是这样的:

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

但是,如果$final字符串将超过140个字符,那么不添加变量。

例如,如果$final字符串为137个字符,则不要将$tag5添加到连接的变量字符串中,因为它的值会超过140个字符。

我该怎么做?

你必须这样编写一个简单的循环:

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

这是非常国际海事组织做到这一点的唯一方法。

+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; 

这里有限制选项,可以随时用任何条件;

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