0

私のslug列で制限を設定するvarchar = 100と、値は次のように保存されます

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

スラッグをキーにしたいuniqueので、最後の自動増分IDで値を更新しslug、新しいスラッグ値は次のようになります。

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
4

3 に答える 3

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;
于 2012-04-04T09:56:05.700 に答える
1

これを行う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;

$maxlenこのコードに特定の値がある場合、IDの前に2つのハイフンが含まれる可能性があります。しかし、それは問題ではないはずです。

于 2012-04-04T09:59:17.530 に答える
1

自動増分値を追加する前に切り捨てることができない場合:

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

$value = array_pop($slug);

$slug = substr(implode('-', $slug), 0, 99 - strlen($value)) . '-' . $value;
于 2012-04-04T09:59:52.240 に答える