如何通过在最后一个单词上剪短来缩短字符串?
例如,允许的符号是10,并且仅回显符合此限制的这些单词。$string = 'Hello Hello John Doe'
// Limit 10. Expected result:
$string = 'Hello'
// Limit 12. Expected result:
$string = 'Hello Hello'
...
我在手册中找到的只是用符号而不是用文字来切割字符串。有一些自定义函数可以这样做,但也许有php命令吗?
答案 0 :(得分:2)
这应该有效:
$str = "i have google too";
$strarr = explode(" ", $str);
$res = "";
foreach($strarr as $k)
{
if (strlen($res.$k)<10)
{
$res .= $k." ";
}
else
{
break;
};
}
echo $res;
答案 1 :(得分:1)
修改:更新版本以更好地应对分词。
这应该不会太难。截断到最大长度,然后截断到最后一个空格。添加对单词末尾长度的调整
<?php
$str = "Hello Hello My name is Hal";
for ($i = 3; $i <30;$i++) {
echo "'".trunc($str,$i)."'\n";
}
function trunc($str, $len) {
$str.=' ';
$out = substr($str,0,$len+1);
$out = substr($out,0,strrpos($out,' '));
return trim($out);
}
答案 2 :(得分:1)
试图编辑Mike的答案,以修复最后一句话,但是无法做到。
所以这是他的修复解决方案:
$str = "Hello Hello My name is Hal";
$len = 10;
if ( strlen( $str ) > $len )
{
$out = substr($str,0,$len);
if ( $str[$len] != ' ')
{
$out = substr($out,0,strrpos($out,' '));
}
}
echo $out; // Hello