2013-07-14 78 views
-1

我试图找到由20个字组成的PHP字符串中的最后一个字符,只有最后一个字符是以下之一:确定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字串,并追加“......”到了最后,但你会发现在$记述的最后一个字符是一个。 (全站式),所以它应该回声“Lorem ipsum dolor sit amet,consectetur adipiscing elit。Vestibulum convallis ipsum ac diam elementum,ac tempus turpis porttitor。Donec eleifend。”

我希望得到这个工作的任何帮助,希望它只是一些愚蠢的!

回答

3

这是错误的

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

,因为 “!”和“?”是非零的,所以尽管第一个条件是错误的,但接下来的两个条件总是成立的。因此整个陈述是真实的。

尝试

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

非常感谢您!你可能会说,我正处于学习PHP的早期阶段。 –

+0

@SamHolguin:没问题,除了** ** if语句外,代码中的所有内容都看起来很好。祝你好运:-) – Fallen

+0

欢呼,欣赏它:) –

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); 
+0

我试过一个数组,但我的尝试是可耻的!谢谢你给我第二个选择...学到新东西! –

相关问题