PHP:商品名を指定文字数以下に丸める

PHP:商品名を指定文字数以下に丸める

文字列を丸めてオーバーフローを解決

楽天市場やヤフーショッピング等、出品するとよくあるのが文字数のオーバーフローです。

特に、メーカーからもらった商品りすとの商品名にSEOワードをくっつけて出品しようとした時よく起こりますね。記載するワード数を少なくして対応するのが通常ですが、システム化して一気にワードを付けようとすると全てのワード数を少なく調整する必要があり、記載ワードの幅が狭くなってしまいます。

オーバーフローした時だけ動作する仕組みを構築する

そうすれば問題解決です。

mb_strimwidth()

検索で一番沢山HITする文字の丸め方です。一発で処理できるのでとても便利。

全体の文字数を指示すると、丸める文字列(例の場合 3byte)を含めて文字数を指示数に調整します。

この関数では全角=2byte、半角=1byteとしてカウントするようで誤差が出る事があるとの事。でも参考資料を見る限りそれほど気にしなくてよさそうです。

mb_strcut()

バイト数の誤差を気にする場合はこの関数を利用。関数1つで処理は終わらないため式を組合わせる必要があります。

第三因子に丸める数を記載しますが、mb_strimwidth() と異なり丸める文字列の数を含まず取り出します。その為、例では13byteの文字列となります。

まとめ

圧倒的にmb_strimwidth()が簡単。バイト数オーバーが気になる様であれば、事前に(最大値-1)などの処理を入れておけばOKの様な気がする。