-1

我试图在由 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 字的字符串,并在末尾附加了“...”,但您会注意到 $descrip 中的最后一个字符是 . (句号),所以它应该呼应“Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum convallis ipsum ac diam elementum, ac tempus turpis porttitor. Donec eleifend。”

我将不胜感激任何帮助以使其正常工作,希望这只是愚蠢的!

4

2 回答 2

3

这是错误的

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

因为 ”!” 和 ”?” 非零,因此尽管第一个条件为假,但接下来的两个条件始终为真。因此,整个陈述是正确的。

尝试

if ($last_char != "." && $last_char!="!" && $last_char!="?") {
于 2013-07-14T20:15:38.920 回答
2

你也可以这样做

<?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);
于 2013-07-14T20:20:31.983 回答