将每个变量为一个字符串,如果它不超过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;
这是非常国际海事组织做到这一点的唯一方法。
答
假设你制作了$ 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
你必须把你的“标签”成这样的数组工作 –
为了证实,我需要把名为$部分阵列中的所有变量,为了这个工作? –
如果你想使用我的代码,是的! –