Php 把绳子剪短。切记最后一句话

Php 把绳子剪短。切记最后一句话,php,Php,如何通过在最后一个单词上剪短字符串 例如,允许的符号是10,并且只回显符合此限制的单词 $string = 'Hello Hello John Doe' // Limit 10. Expected result: $string = 'Hello' // Limit 12. Expected result: $string = 'Hello Hello' ... 我在手册中所能找到的只是用符号而不是文字来切割字符串。有一些自定义函数可以执行此操作,但可能有php命令用于此操作?编辑:更新版

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

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

$string = 'Hello Hello John Doe'

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

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

我在手册中所能找到的只是用符号而不是文字来切割字符串。有一些自定义函数可以执行此操作,但可能有php命令用于此操作?

编辑:更新版本以更好地处理分词

这应该不会太难。截断到最大长度,然后截断到最后一个空格。为落在单词末尾的长度添加调整

<?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); 
}
这应该可以:

$str = "i have google too";
$strarr = explode(" ", $str);

$res = "";

foreach($strarr as $k) 
{
    if (strlen($res.$k)<10)
    {
        $res .= $k." ";
    }
    else
    {
        break;
    };
}

echo $res;
$str=“我也有谷歌”;
$strarr=爆炸(“,$str”);
$res=”“;
foreach($strarr为$k)
{

如果(strlen($res.$k)试图编辑迈克的答案,以修复最后一句话,但无法

下面是他的解决方案:

$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

被问了很多次。这是一个非常令人困惑的问题。你说“在最后一个词上切掉它”,但你期待第一个词。然后你说“允许的符号是10”,这似乎与你之前所说的没有任何关系。最后你说你想“只回应这些词”.那么你到底想做什么呢?正如@Unreless所说,你可以创建一个子字符串。有什么问题吗?只要将字符串拆分,并在大小小于目标的情况下将部分添加到一起。还有-1表示“我也有谷歌”这只在最后一个单词被截断的情况下才有效。如果不是这样,你就失去了一个单词。看起来效果不错!@Gediminas使用
$len=11
$len=100
尝试一下,你就会发现问题。哦,是的,我看不到最后一个单词