PHPで文字列を操作する時に便利なライブラリ「str」



PHP で文字列を加工する時に便利なメソッドが詰まったライブラリ「str」の紹介です。

 PHPであれば、POSTで受け取った文字列を " 置換 "、" 特定ワードが含まれているかチェック " など、文字列を操作する処理が必要になることは珍しくありません。

そんな文字列の色々が簡単に出来るようになる PHP用のライブラリが「str」です。
 

str で出来ること 

- 細かい文字列の加工や 抜き出し、特定ワードが含まれているかチェックなど、文字列の操作が簡単に出来るようになります

str のインストール

 str のインストールは ' composer ' を使って コマンドライン上から行います。また、PHPのバージョンが ' 7.0 以上 ' の必要があるので、注意してください。

# composer を使って str のインストール
composer require str/str


str の使い方

strの使い方は簡単で、ライブラリをインスタンス化して、メソッドを通すだけで使うことが出来ます。

use Str\Str; // Strの読み込み
// use Str\Str as StrLib; // as を使って読み込み名を変更する事も可能です

// strのインスタンス化
$str = new Str('this sentence to be upper case');
// 最初の一文字を大文字に変換
$str->upperCaseFirst(); // This sentence to be upper case


また、関数を繋げる、メソッドチェーンにも対応しています。

use Str\Str; // Strの読み込み
// use Str\Str as StrLib; // as を使って読み込み名を変更する事も可能です

// strのインスタンス化
$str = new Str('this sentence to be upper case');
// メソッドチェーン
$str->upperCaseFirst()
     ->length(); // 30 (文字数をカウント)


文字列を加工するメソッド

・ ensureLeft
・ ensureRight 

 ensure は文字列の左右に指定文字を添えるメソッドです。' ensureLeft ' なら 左 ( 文字先頭 ) に、 ' ensureRight ' ( 文字後尾) なら 右に 指定文字が添えられます。

文字列の先頭 or 後尾が指定文字と一致する場合は、指定文字が追加されません。

$str = new Str('文字列*');
echo (string)$str->ensureLeft('*'); 
// *文字列*

$str = new Str('*文字列*');
// 指定文字は追加されません
echo (string)$str->ensureLeft('*'); 
// *文字列*


・ toLowerCase
・ toUpperCase

 to**Case は 文字列を変換するメソッドです。' toLowerCase ' なら小文字に、 ' toUpperCase ' なら大文字に変換されます。

$str = new Str('Apple');

// 小文字に変換
echo $str->toLowerCase(); // apple
// 大文字に変換
echo $str->toUpperCase(); // APPLE


・ replace
・ replaceWithLimit

' replace ' は ベースとなる文字を 指定した文字に置き換えるメソッドです。第一引数には 置き換える文字、第二引数には置き換えたい文字がはいります。

 replace は指定文字を全て置き換えるのに対し、' replaceWithLimit ' は置き換える文字の個数を指定できます。" 第一引数には置き換えたい文字 "、" 第二引数には置き換える文字 "、 " 第三引数には置き換える文字の個数 " を指定します。

$str = new Str('Apple');

// replace : 'A' を 'a'に置き換え
echo $str->replace('A','a'); // apple

// replaceWithLimit :  一つだけ "p" を "P"に置き換え
echo $str->replaceWithLimit('p', 'P', 1); // APple


・ repeat

 ' repeat ' は インスタンス化した文字列を指定回数繰り返すメソッドです。第一引数で繰り返す回数を Int 型で指定します。

$str = new Str('あ。');
echo $str->repeat(3); // あ。あ。あ。


・ reverse

 ' reverse ' は文字を反転させたい時に使うメソッドです。一時的なパスワードや暗号化する時などに組み合わせると便利に使えそうです。

$str = new Str('おえういあ');
echo $str->reverse(); // あいうえお


random
shuffle

 ' random ' ランダムな文字列を作成するメソッドです。第一引数には生成する文字数、第二引数には最大のサイズ、第三引数には許可する文字を指定できます。
 ' shuffle ' メソッドは元となる文字列をランダムに入れ替えてくれます。

## random ##

$str1 = new Str('');
//ランダムな文字列を10文字で作成 * 生成される文字は毎回変わります
echo $str1->random(10); // LsGuOPgtJ4

$str2 = new Str('abc def');
// 許可する文字を指定することもできます
echo $str2->random(3, -1, 'abcdef'); // e.x.p : edf


## shuffle ##

$str3 = new Str('/何かの文字列');
// 文字列をランダムに入れ替えます
echo $str3->shuffle(); // e.x.p : の列/文字か何


 ・between

 ' between ' は、元なる文字から文字の間の文字列を抜き出すメソッドです。

$str = new Str("#何かの文字列/ ");
// 指定文字から指定文字の間の文字列の抜き出し
echo (string)$str->between("#", '/'); // 何かの文字列


join

 ' join ' は中間文字を指定して文字を連結するメソッドです。第一引数には連結する中間文字、第二引数には連結する文字を配列で指定します。

$str = new Str('1');
// 文字列を連結
echo $str->join('-', ['2', '3']); // 1-2-3


文字列を確認するメソッド

contains
・ containsAll
・ containsAny

 contains** はベースとなる文字列に、指定文字が含まれているかチェックするメソッドです。

' contains ' は 指定した文字が 一文字でも含まれていたら trueを返します。

' containsAll ' は指定する文字が複数ある場合に使用し、引数の配列内の文字が全て含まれている場合に true を返します。
それに対し、 ' containsAny ' は引数の配列の文字が一つでも含まれていれば true を返します。

// 元になる文字列
$str = new Str('Apple');

## contains ##
// A が含まれているので true
echo $str->contains('A'); // true
// aが含まれていないので true
echo $str->contains('a', false); // true
// if( ! $str->contains('A') ){ // 上のコードに相当 }

## containsAll ##
// 配列の文字が "Apple"に全て含まれているので true
echo $str->containsAll(['A', 'p', 'e']); // true
// 配列内の要素 0 が 'Apple'内に含まれていないので false
echo $str->containsAll(['A', 'p', '0']); // false

## containsAny ##
// A が含まれているので true
echo $str->containsAny(['A', 'c', 'bar']); // true
// 配列内の文字が Appleに どれも含まれないので false
echo $str->containsAny(['foo', 'c', 'bar']); // false

# containsAnyの実用例
$str1 = new Str('NGワード');
// NG が 含まれているので true
echo $str1->containsAny(['NG', 'A', 'B']); // true
// $str1 の文字列に配列内の文字がどれも当てはまらないので false
echo $str1->containsAny(['OK', 'A', 'B']); // false


startsWith
startsWithAny
endsWith
endsWithAny

 ' startWith ' メソッドはベースとなる文字列が 指定文字から始まっているか、チェックするメソッドです。第一引数には 指定文字をいれます。 startWithは 1つに対し、' startWithAny ' メソッドは配列で複数指定できます。

また、endWith** メソッドは 指定文字で終わっているかチェックするメソッドです。

// 元になる文字列
$str = new Str('Apple');

## startWith, startWithAny ##
// A から始まっているので true
echo $str->startsWith('A'); // true
// 配列内の要素に A があるので true
echo $str->startsWithAny(['foo', 'A', 'bar']);

## endWith, endWithAny ##
// 'Apple' は最後が e で終わっているので true
echo $str->endsWith('e'); // true
// 配列内の要素に A があるので true
echo $str->endsWithAny(['foo', 'e', 'bar']); // true


Summary

 以上が str の紹介でした。上記で紹介したメソッドは一部で、" 文字列がUUID形式か確認 " したり、" 文字列を配列に分解 "するなど、便利なメソッドがまだまだ用意されています。
( * 執筆時点のバージョンで およそ 100個以上 )

 PHP 7.0以上の制約がありますが、文字列の加工が必要な時には役立つライブラリです。また依存ライブラリも無いので どんなプロジェクトでも気軽に導入できそうです。

GitHub : fe3dback/str

 

この記事のカテゴリ
プログラミング

この記事に付けられているタグ