Php 如果没有';不能超过x个字符

Php 如果没有';不能超过x个字符,php,string,variables,Php,String,Variables,我设置了几个变量,例如: $url = 'http://stackoverflow.com'; $tag1 = '#lorem1'; $tag2 = '#lorem2'; $tag3 = '#lorem3'; $tag4 = '#lorem4'; $tag5 = '#lorem5'; 我想把它们都放在一根绳子里。大概是这样的: $final = $url .' '. $tag1 .' '. $tag2... $str = ''; foreach($parts as $part) {

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

$url = 'http://stackoverflow.com';
$tag1 = '#lorem1';
$tag2 = '#lorem2';
$tag3 = '#lorem3';
$tag4 = '#lorem4';
$tag5 = '#lorem5';
我想把它们都放在一根绳子里。大概是这样的:

$final = $url .' '. $tag1 .' '. $tag2...
$str = '';
foreach($parts as $part)
{
    if(strlen($str.$part) >= 140)
    {
        break;
    }
    $str .= $part;
}
return $str;
但是,如果
$final
字符串将超过140个字符,则不要添加变量

例如,如果
$final
字符串为137个字符,则不要将
$tag5
添加到联接变量字符串中,因为其值将使其超过140个字符


我如何才能做到这一点?

您必须编写一个简单的循环,如下所示:

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

在我看来,这几乎是实现这一点的唯一方法。

假设你制作了$array\u name\u 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

你必须把你的“标签”放到一个数组中,这样才能工作。为了确认,我需要把所有变量放到一个名为$parts的数组中,这样才能工作?非常好,非常好。我马上就接受。