缩短字符串。用最后一个字来削减它

时间:2014-05-22 06:39:20

标签: php

如何通过在最后一个单词上剪短来缩短字符串?

例如,允许的符号是10,并且仅回显符合此限制的这些单词。

$string = 'Hello Hello John Doe'

// Limit 10. Expected result:
$string = 'Hello'

// Limit 12. Expected result:
$string = 'Hello Hello'
...

我在手册中找到的只是用符号而不是用文字来切割字符串。有一些自定义函数可以这样做,但也许有php命令吗?

3 个答案:

答案 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;

http://codepad.org/NP9t4IRi

答案 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); 
}

这是codepad version

答案 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