2013-07-14 106 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

我試過一個數組,但我的嘗試是可恥的!謝謝你給我第二個選擇...學到新東西! –

相關問題