如果每个变量不超过x个字符,则将其放入一个字符串中


Put each variable into one string if it doesn't exceed x characters

我设置了几个变量,例如:

$url = 'http://stackoverflow.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;

让我们假设$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