2014-02-17 19 views
0

在我的網站的每個頁面上,我有一個變量,我定義爲「描述」,這可以是長或短,我打算使用它對於元描述也是如此。php - 基於另一個已定義變量的自動化元描述生成

我一直在尋找如何自動切斷定義的描述變量中的額外長度,因此它將適當地適合元描述。我搜索並發現這個:http://www.php.net/manual/en/function.substr.php

我不能說我理解了足夠的開發解決方案。

爲了舉例說明我想要做的事:

<?php 
$description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam nec dapibus leo, vitae euismod eros. Morbi lectus dolor, iaculis id ligula ut, rutrum viverra mauris. Nam ac malesuada velit. Morbi sit amet dui dapibus, ultrices libero fringilla, feugiat lectus."; 
?> 

我必須截斷對$description後190個字符的最後一句話,後綴一錘定音「...」。像這樣:

"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam nec dapibus leo, vitae euismod eros. Morbi lectus dolor, iaculis id ligula ut, rutrum viverra mauris. Nam ac malesuada velit. Morbi..." 

,並找到寫出來的回聲的方式來產生上述:

<?php echo $description(truncated); ?> 

回答

3

您要使用的mb_strimwidth功能。按照文件例如:

<?php echo mb_strimwidth($description, 0, 190, "..."); ?> 
+0

確保你確實是有這個工作使MB擴展。許多主人(可悲)不會。所以你會被迫使用wordwrap(),strpos()和substr() – Tularis

+0

的組合哦,太棒了。我之前注意到的事情是,在決定走這條路線之前,我研究過,是tumblr爲所有用戶的博客自動生成描述的系統。它似乎永遠不會將一個單詞削減一半,並且允許最後一個單詞在一定的「軟字符限制」之後通過寬鬆。這是我試圖找出常規字符限制的東西。 – Yogi

0

沒有MBSTRING:

$truncated = preg_replace('/^(.{190}[^[:punct:]\s]*).*$/', '\\1', $description); 
if (strlen($truncated) < strlen($description) -2) { 
    // result shouldn't be longer than original 
    $truncated .= '...'; 
} 

echo $truncated;