revolution/laravel-str-mixins

Laravel Str mixins

2.6.0 2024-02-20 05:18 UTC

This package is auto-updated.

Last update: 2024-10-29 06:46:53 UTC


README

Build Status Maintainability Test Coverage

Illuminate\Support\Strを拡張する主に日本語用のmixin

Requirements

  • PHP >= 8.1
  • Laravel >= 10.0

Versioning

  • 基本的にはセマンティックバージョニング。
  • サポート期間はPHP本体やLaravelと同じなのでサポート終了した旧バージョンは+0.1のバージョンアップで躊躇なく切っていく。
  • 旧メジャーバージョンは別ブランチで残す。
  • v1.xはLaravel6のみ。
  • v2.xはFluent StringsのためにLaravel7以上のみ対応。

Installation

composer require revolution/laravel-str-mixins

Uninstall

composer remove revolution/laravel-str-mixins

Str

Str::textwrap(string $str, int $width = 10, string $break = PHP_EOL): string

指定の文字数で改行。単純に改行なので禁則処理などはない。

$text = Str::textwrap(str: 'abcde', width: 3);

// abc
// de

元々はOGP画像の幅に収めるための強引な改行が目的。

Laravel 10.19.0で同名のStr::wordWrap()が追加されたのでtextwrapに変更。動作が違うので削除せず残し。Str::wordWrap()は日本語では期待した動作にならない。

Str::kana(string $str, string $option = 'KV', string $encoding = 'UTF-8'): string

mb_convert_kana()と同じ。

$text = Str::kana(str: 'abcあいうアイウ', option: 'KVa');

// abcあいうアイウ

Str::truncate(string $str, int $limit = 100, string $end = '...'): string

Str::limit()は半角は1、全角は2でカウントされて切り捨て。マルチバイト関数を使っているけど文字の幅でカウントしている。

$text = Str::limit('abcあいうえお', 7);

// abcあい...

日本語だと期待した動作ではないので文字数でカウントして切り捨てるStr::truncate()

$text = Str::truncate(str: 'abcあいうえお', limit: 7);

// abcあいうえ...

Fluent Strings

textwrap(int $width = 10, string $break = PHP_EOL): Stringable

$text = Str::of('abcde')->textwrap(width: 3)->value();

// abc
// de

kana(string $option = 'KV', string $encoding = 'UTF-8'): Stringable

$text = Str::of('abcあいうアイウ')->kana(option: 'KVa')->value();

// abcあいうアイウ

繋げて使う用。

$text = Str::of('abcあいうアイウ')->kana(option: 'KVa')->textwrap(3)->value();

// abc
// あいう
// アイウ

truncate(int $limit = 100, string $end = '...'): Stringable

$text = Str::of('abcあいうえお')->truncate(limit: 6, end: '___')->value();

// abcあいう___

LICENSE

MIT