确定PHP字符串中的最后一个字符,用新字符替换并返回字符串


Determine last character in PHP string, replacing and returning the string with new characters

我正在尝试查找由20个单词组成的PHP字符串中的最后一个字符,只有当最后一个字符串是以下字符之一时,才将其修剪并替换为"…":

,.:;或空间"

但是如果最后一个字符是:

我只想把这些字符附加到原始字符串中。

我已经走了多远:

<?php
function limit_words($description, $count) {
    $words = explode(" ", $description);
    $chunk = array_chunk($words, $count);
    $description = implode(" ", $chunk[0]);
    $last_char = $description[strlen($description)-1];
    $replace = "...";
    if ($last_char != "." || "!" || "?") {
        $trim = rtrim($description, $last_char);
        return $trim . $replace;
    }
    else
    {
        return $description;
    }
};
$descrip = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum convallis ipsum ac diam elementum, ac tempus turpis porttitor. Donec eleifend. lobortis gravida. Duis vulputate, ante ac interdum ultricies, elit nunc mollis ante, id consequat nulla mauris vitae nunc. Curabitur leo mauris, tristique in euismod eu, luctus nec libero. Integer sapien erat, egestas ut lectus eu, sagittis scelerisque neque.";
$count = 20;
echo limit_words($descrip, $count);
?>

我的代码成功地生成了一个20字的字符串,并在末尾附加了"…",但您会注意到$descript中的最后一个字符是a。(句号),所以它应该呼应"Lorem ipsum dolor坐amet,consectetur adipiscing elit.Vestibulum convallis ipsum ac diam elementum,ac tempus turpis porttitor.Donec eleifend。"

我很感激任何帮助,希望这只是一些愚蠢的事情!!

这是错误的

if ($last_char != "." || "!" || "?")

因为"!"answers"?"是非零的,所以尽管第一个条件为假,但接下来的两个条件始终为真。因此,整个说法是正确的。

尝试

if ($last_char != "." && $last_char!="!" && $last_char!="?") {

你也可以像这个一样

<?php
function limit_words($description, $count) {
    $words = explode(" ", $description);
    $chunk = array_chunk($words, $count);
    $description = implode(" ", $chunk[0]);
    $last_char = $description[strlen($description)-1];
    $replace = "...";
    // you compare it to an array
    if (!in_array($last_char, array(".", "!", "?"))) {
        $trim = rtrim($description, $last_char);
        return $trim . $replace;
    }
    else
    {
        return $description;
    }
}
$descrip = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum convallis ipsum ac diam elementum, ac tempus turpis porttitor. Donec eleifend. lobortis gravida. Duis vulputate, ante ac interdum ultricies, elit nunc mollis ante, id consequat nulla mauris vitae nunc. Curabitur leo mauris, tristique in euismod eu, luctus nec libero. Integer sapien erat, egestas ut lectus eu, sagittis scelerisque neque.";
$count = 20;
echo limit_words($descrip, $count);