【问题标题】:Limit string to some number of characters [duplicate]将字符串限制为一定数量的字符[重复]
【发布时间】:2014-04-06 00:44:21
【问题描述】:

我正在尝试执行下一个任务: 我有一个字符串,例如。 “产品名称很长,因此可以延伸到多条线”。我想进行下一个自定义:如果字符串中的字符数(不包括空格)超过 22 个,则将其剪切到最后一个单词,并添加“...”。

【问题讨论】:

  • 酷,那就去做吧。如果您不知道如何操作,请发布您当前的代码并提出问题。
  • 我已经阅读了您使用 CSS 的解决方案。但是,浏览器怎么知道我要留下多少字符呢?而且,它会是跨浏览器的解决方案吗?
  • 但是,据我了解,它会在您的示例中将字符串剪切为 50 个字符。我需要最后一句话才能完整
  • 我认为你正在寻找的是一些像webwidetutor.com/php/substring

标签: php


【解决方案1】:
<?php
  if(strlen($yourString) > 22)
    $rest = substr($yourString, 22,-1)."...";
  else
    $rest = $yourString;
  echo $rest;
?>

如果你想让最后一个词不删减,那么

<?php
$yourString = "bla blaaa bla blllla bla bla";
$out = "";
if(strlen($yourString) > 22) {
    while(strlen($yourString) > 22) {
        $pos = strrpos($yourString, " ");
        if($pos !== false && $pos <= 22) {
            $out = substr($yourString,0,$pos);
            break;
        } else {
            $yourString = substr($yourString,0,$pos);
            continue;
        }
    }
} else {
    $out = $yourString;
}
echo "Output String: ".$out;
?>

【讨论】:

  • 如果$yourString 已经小于最大长度怎么办?
  • @NiettheDarkAbsol 是的,伙计..我忘记了那个条件
  • 在我的情况下,它返回: ry long name,因此它会持续到不止一个 lin... 而且它不正确.. 另外,我需要最后一个词是完整的,而不是剪切如本例所示
  • 你希望最后一句话不要删减吗?
  • Yes) 我想在最后一个完整单词后添加“...”,此时字符总数(不含空格)将小于 22。因此,可能是 15 个字符最后一个单词,下一个单词是 24 个字符的摘要
【解决方案2】:
if(strlen($myString)>=22)
{
  $result = substr($myString, 0, 22)."...";
}
else
{
  $result = $myString;
}

【讨论】:

  • 一点评论也无妨
【解决方案3】:

你可以这样做:

<?php
$text = "A very long woooooooooooord.";
if(strlen($text) > 22 ) {
 echo substr($text, 1, 22)."..";
} else {
echo $text;
}

?>

【讨论】:

  • OP 想要在 X 个字符之后 剪切 一个字符串,not 将它分成不同的行。
  • @AmalMurali 更正帖子
  • 什么意思?纠正什么?
  • 不,它不能按我需要的方式工作
猜你喜欢
  • 2022-11-02
  • 1970-01-01
  • 2020-12-07
  • 1970-01-01
  • 2020-06-28
  • 2019-09-29
  • 1970-01-01
  • 1970-01-01
  • 2013-05-25
相关资源
最近更新 更多