2012-04-04 65 views
0

在我slug專欄中,我設置的限制varchar = 100和值將存儲這樣如何截斷動態長度url slug的字符串?

how-do-i-truncate-a-string-with-dynamic-length-url-slug 

我想要的塞將是一個unique關鍵,所以我更新slug值與上自動遞增的id和新的團狀價值是:

how-do-i-truncate-a-string-with-dynamic-length-url-slug-10 

所以這裏的last auto increment將在年底大數目..

preg_replace('/\s+?(\S+)?$/', '', substr($slugwithautoincrement, 0, 101)); 

有了這個preg_replace刪除auto increment number

問:

如何截斷值修正爲100個字符,而不刪除最後一個自動遞增多少?

所以結果應該是:

how-do-i-truncate-a-string-with-[....remove from here...]10 
+0

可以截斷字符串添加自動遞增號之前? – bendataclear 2012-04-04 09:55:52

回答

1

如果不能追加自動遞增值之前截斷:

$slug = explode('-', $slug); 

$value = array_pop($slug); 

$slug = substr(implode('-', $slug), 0, 99 - strlen($value)) . '-' . $value; 
1

截斷,然後再追加自動增量值。

或者做這樣的事情:

$maxlength = 30; 
$number = 1234567; 
$string = "how-do-i-truncate-a-string-with-dynamic-length-url-slug"; 
$slug = substr($string, 0, $maxlength - strlen($number) - 1)."-".$number; 
1

下面是做這件事:

$slug = "how-do-i-truncate-a-string-with-dynamic-length-url-slug-10" 
$maxlen = 100; 
if (strlen($slug) > $maxlen) { 
    $idlen = strlen($slug) - strrpos($slug, '-'); // how long is the "-10" part? 
    $id = substr($slug, -$idlen); 
    $slug = substr($slug, 0, $maxlen - $idlen).$id; 
} 
echo $slug; 

此代碼都不可能用id前兩個連字符結束,如果$maxlen恰好具有特定值。這應該不是問題。