在php中缩短文本字符串

pkmbmrz7  于 2021-06-20  发布在  Mysql
关注(0)|答案(9)|浏览(418)

有没有一种方法可以修剪php中的文本字符串,使其具有一定数量的字符?例如,如果我有字符串: $string = "this is a string"; 我该怎么说: $newstring = "this is"; 这是我到目前为止用的 chunk_split() ,但它不起作用。有人能改进我的方法吗?

function trimtext($text)
{
$newtext = chunk_split($text,15);
return $newtext;
}

我也看了这个问题,但我不太明白。

k5hmc34c

k5hmc34c1#

substr 让我们取字符串的一部分,该部分由所需的字符组成。

eivnm1vs

eivnm1vs2#

你可以用这个

substr()

函数获取子字符串

doinxwow

doinxwow3#

substr将单词切成两半。同样,如果word包含utf8字符,它的行为也不正常。所以最好使用mb\u substr: $string = mb_substr('word word word word', 0, 10, 'utf8').'...';

zqdjd7g9

zqdjd7g94#

我的函数有一些长度,但我喜欢使用它。我将字符串int转换为数组。

function truncate($text, $limit){
    //Set Up
    $array = [];
    $count = -1;
    //Turning String into an Array
    $split_text = explode(" ", $text);
    //Loop for the length of words you want
    while($count < $limit - 1){
      $count++;
      $array[] = $split_text[$count];
    }
    //Converting Array back into a String
    $text = implode(" ", $array);

    return $text." ...";

  }

或者如果文本来自一个编辑器,你想去掉html标签。

function truncate($text, $limit){
    //Set Up
    $array = [];
    $count = -1;
    $text = filter_var($text, FILTER_SANITIZE_STRING);

    //Turning String into an Array
    $split_text = preg_split('/\s+/', $text);
    //Loop for the length of words you want
    while($count < $limit){
      $count++;
      $array[] = $split_text[$count];
    }

    //Converting Array back into a String
    $text = implode(" ", $array);

    return $text." ...";

  }
dxxyhpgq

dxxyhpgq5#

如果您想要前10个单词的摘要(您可以在$text中使用html,在脚本中有strip\u标记之前),请使用以下代码:

preg_match('/^([^.!?\s]*[\.!?\s]+){0,10}/', strip_tags($text), $abstract);
echo $abstract[0];
zf2sa74q

zf2sa74q6#

function trimtext($text, $start, $len)
{
    return substr($text, $start, $len);
}

您可以这样调用函数:

$string = trimtext("this is a string", 0, 10);

将返回: This is a

sycxhyv7

sycxhyv77#

if (strlen($yourString) > 15) // if you want...
{
    $maxLength = 14;
    $yourString = substr($yourString, 0, $maxLength);
}

我会做的。
看看这里。

zmeyuzjn

zmeyuzjn8#

你没有说原因,但想想你想要达到什么。下面是一个函数,用于逐字缩短字符串,在末尾添加或不添加省略号:

function limitStrlen($input, $length, $ellipses = true, $strip_html = true) {
    //strip tags, if desired
    if ($strip_html) {
        $input = strip_tags($input);
    }

    //no need to trim, already shorter than trim length
    if (strlen($input) <= $length) {
        return $input;
    }

    //find last space within length
    $last_space = strrpos(substr($input, 0, $length), ' ');
    if($last_space !== false) {
        $trimmed_text = substr($input, 0, $last_space);
    } else {
        $trimmed_text = substr($input, 0, $length);
    }
    //add ellipses (...)
    if ($ellipses) {
        $trimmed_text .= '...';
    }

    return $trimmed_text;
}
g2ieeal7

g2ieeal79#

如果你想得到一个包含一定数量字符的字符串,你可以使用substr,即。

$newtext = substr($string,0,$length);

其中$length是新字符串的给定长度。

相关问题