2013-07-18 52 views
0

這是我使用的HTML顯示在我的WordPress的帖子摘錄格式化代碼:mb_substr切斷文章摘錄中的單詞?

function get_excerpt($post, $ln){ 
     if (!empty($post->post_excerpt)) { 
      if (strlen($post->post_excerpt) > $ln) { 
       echo mb_substr(($post->post_excerpt), 0, $ln); 
      } 
     } else { 
      if (strlen($post->post_content) > $ln) { 
        echo mb_substr(($post->post_content), 0, $ln); 
      } 
     } 

    } 

我如何可以編輯mb_substr使摘錄將在週期結束?例如,一段摘錄將像這樣結束,「她有一種可愛無辜的魅力」,而不是「她有一種可愛而天真的魅力,讓人們關注她」。我想只有在字符的限制,這是設置在800。在碼$ LN被設置爲800

更新停止摘錄完成一個週期的句子和結束,而不是:

這是我最終使用的代碼。摘錄中的字詞仍然被切斷,但我添加了一個Read More鏈接到帶有點的末尾。

function get_excerpt($post, $ln){ 
    if (!empty($post->post_excerpt)) { 
     if (strlen($post->post_excerpt) > $ln) { 
      echo mb_substr(($post->post_excerpt), 0, $ln) . '...'; ?> <a href="<?php echo get_permalink($post -> ID)?>">[Read More]</a> 
<?php } 
    } else { 
     if (strlen($post->post_content) > $ln) { 
       echo mb_substr(($post->post_content), 0, $ln) . '...';?> <a href="<?php echo get_permalink($post -> ID)?>">[Read More]</a> 
<?php } 
    } 

} 

回答

1

如果你能保證會有一個「。」在你的文本,然後你可以這樣做:

echo strtok("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sit amet egestas lacus. Maecenas posuere dolor vitae ultrices viverra.","."); 

這將輸出:「Lorem存有悲坐阿梅德,consectetur adipiscing ELIT」

strtok manual page

+0

每個內容摘錄說不同的事情,所以我從來不知道什麼時候會有一段時間,但每個片段都有多個句子。有一個時期在不同的人物限制。我希望我可以操縱mb_substr在摘錄的末尾添加「... [Read More]」,然後閱讀更多內容將獲得摘錄的固定鏈接。切斷中間詞的摘錄看起來很糟糕。 – user1114968

+0

但是你保證所有摘錄至少有一個「。」? 從技術上講,沒有回答原來的問題,因爲我剛纔檢查和你沒有指定你想仍然使用mb_substr但是這會工作: '$摘錄= strtok的($後> post_excerpt,「」);' '$ excerpt。='... [Read More]';' – phil

+0

但是你保證所有的摘錄至少有一個「。」? 是的,至少有一個「。」在每一個節選。那麼如何讓mb_substr以特定的「。」結尾呢?例如,如果每個片段都有5個片段,我怎樣才能在第二個片段結束片段? – user1114968