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