2014-01-13 61 views
2

這是我在我的Word模板功能修剪我需要更換我的話修剪成字符修剪

<?php 


/** 
* Trim a string to a given number of words 
* 
* @param $string 
* the original string 
* @param $count 
* the word count 
* @param $ellipsis 
* TRUE to add "..." 
* or use a string to define other character 
* @param $node 
* provide the node and we'll set the $node-> 
* 
* @return 
* trimmed string with ellipsis added if it was truncated 
*/ 

    function word_trim($string, $count, $ellipsis = FALSE){ 
$words = explode(' ', $string); 
if (count($words) > $count){ 
    array_splice($words, $count); 
    $string = implode(' ', $words); 

    if (is_string($ellipsis)){ 
     $string .= $ellipsis; 
    } 
    elseif ($ellipsis){ 
     $string .= '&hellip;'; 
    } 
} 
return $string; 
} 

?> 

,並在頁面本身,它看起來像這樣

<?php echo word_trim(get_the_excerpt(), 12, ''); ?> 

我想知道,有沒有一種方法可以修改該功能來修剪字符數量而不是字數?因爲有時當有更長的單詞時,它們全部被抵消和未對齊。

謝謝

+0

您是否嘗試過使用['substr()'](http://php.net/substr)?例如。 'substr($ string,0,$ count)'。這基本上不是你想要做的? –

回答

1

看看功能的邏輯: 它分割一個空間,計數和結果數組切片的字符串,並將它們放在一起回來。
現在空格是單詞的分隔符......我們需要分割字符串以獲取所有字符而不是單詞?沒錯(更好地說:空字符串)!

使您無論這些線路

function word_trim($string, $count, $ellipsis = FALSE){ 
    $words = explode(' ', $string); 
    if (count($words) > $count){ 
    //... 
    $string = implode(' ', $words); 
    } 
    //... 
} 

的改變

$words = str_split($string); 
//... 
$string = implode('', $words); 

,你應該罰款。
注意,我改變第一explode -call到str_split,如explode不接受空定界符(根據manual)。

我會將函數重命名爲character_trim或其他東西,也許$word變量也是如此,所以您的代碼對讀者來說是有意義的。