各種変換ユーティリティ
利用するプロジェクトの composer.json に設定を追加する。
その後以下で composer でインストールを実行する。
composer require shimoning/formattercomposer config repositories.shimoning/formatter vcs https://github.com/shimoning/formatter.git"repositories": {
"formatter": {
"type": "vcs",
"url": "https://github.com/shimoning/formatter.git"
}
},PHP 7.3 以上
要: php-dom
数値を n:mm 形式にする
数値に 分 を入れれば h:mm として、秒 を入れれば m:ss として利用できる。
: より前の値は 3桁以上になりうる。
Time::number2clock(100); // -> 1:40第2引数には時間を分けるための文字を設定可能。
デフォルトでは : となっている。
Time::number2clock(100, '-'); // -> 1-40n:mm 形式の文字列を数値にする
number2clock の逆。
Time::clock2number('1:40'); // -> 100第2引数には時間を分けるための文字を設定可能。
デフォルトでは : となっている。
Time::clock2number('1-40', '-'); // -> 100数字的な文字列からカンマを取り除く。
Number::removeComma('123,456'); // -> 123456第2引数には、カンマ扱いする文字を設定可能。
デフォルトでは , となっている。
Number::removeComma('222 333', ' '); // -> 222333標準関数 number_format のラッパー。
Number::numberFormat(123456); // -> 123,456第2引数には、区切り文字として付与する文字を設定可能。
デフォルトでは , となっている。
Number::numberFormat(222333, ' '); // -> 222 333第3引数には、削除すべき区切り文字を設定可能。
デフォルトでは , となっている。
Number::numberFormat('111=222', ' ', '='); // -> 111 222SQLのサニタイザ
前方一致や後方一致を安全に行うための文字列サニタイザ。
Sql::sanitizeTextForSearchQuery('%test'); // -> \%testマルチバイト対応 trim
マルチバイト対応で、文字列の前後から空白を取り除く。
// [全角スペース]a23[半角スペース]あああ
Text::trim(' a23 あああ '); // -> a23 あああマルチバイト対応で空白で文字列を配列にする
マルチバイト対応のスペース限定 explode 。
末尾のスペースは無視する。
// [全角スペース]a23[半角スペース]あああ
Text::splitBySpace(' a23 あああ ') // -> ['a23', 'あああ']
// エイリアス
Text::explodeBySpace(' a23 あああ ') // -> ['a23', 'あああ']列番号をアルファベットに変換する
変換できない場合は false を返す。
Excel::alphabet(0); // -> false
Excel::alphabet(1); // -> A
Excel::alphabet(27); // -> AA列のアルファベットを列番号に変換する
変換できない場合は false を返す。
Excel::index('エラー'); // -> false
Excel::index('A');; // -> 1
Excel::index('AA'); // -> 27n番台の最初の値を取得する
- 第1引数は、1桁目の数字。
- 第2引数は、桁数。
Range::lowerBound(1, 3); // -> 100n番台の最後の値を取得する
第1引数は、1桁目の数字。 第2引数は、桁数。
Range::upperBound(1, 3); // -> 199(フォーマットというよりはユーティリティ群)
URLをHTMLのリンクタグに変換する
- 第1引数は、href の値
- 第2引数は、リンクのテキスト。省略すると URL が表示される
- 第3引数は、属性の配列もしくは文字列
- 第4引数は、基本となるURLを設定。初期では現在のURLが自動で使われる
// 第4引数を指定しない場合、プロトコルから始まる場合は自動で target="_blank" を付与する
Link::getHtml('https://example.com'); // -> <a href="https://example.com" target="_blank">https://example.com</a>;
Link::getHtml('https://example.com', 'Example'); // -> <a href="https://example.com" target="_blank">Example</a>
Link::getHtml('http://example.com'); // -> <a href="http://example.com" target="_blank">http://example.com</a>;
Link::getHtml('//example.com'); // -> <a href="//example.com" target="_blank">//example.com</a>;
// 第3引数 (クラスやdata属性やその他)
Link::getHtml('https://example.com', 'Example', ['class' => 'link']); // -> <a href="https://example.com" class="link" target="_blank">Example</a>
Link::getHtml('https://example.com', 'Example', 'class="link"'); // -> <a href="https://example.com" class="link" target="_blank">Example</a>
// 第4引数
Link::getHtml('https://example.com/hoge', 'Example', '', 'https://example.com'); // -> <a href="https://example.com/hoge" target="_self">Example</a>
// false を指定すると target の属性を自動で付与しない
Link::getHtml('https://example.com/hoge', 'Example', '', false); // -> <a href="https://example.com/hoge">Example</a>parse_url の結果を元にURLを構築する
Link::buildUrl(['scheme' => 'https', 'host' => 'example.com', 'user' => 'user', 'pass' => 'pass']); // -> https://user:pass@example.com属性文字列を連想配列にする
Link::parseAttributes('class="link" data-info="value"'); // -> ['class' => 'link', 'data-info' => 'value']Aタグの target の値を取得する
- 第1引数は、href の値
- 第2引数は、基本となるURLを設定。初期では現在のURLが自動で使われる。
// ルートや相対パスなどの場合は _self
Link::getTarget('/path/to'); // -> '_self'
Link::getTarget('./path/to'); // -> '_self'
// 第2引数を省略すると、アクセスしたホスト名が比較される (想定: http://localhost)
Link::getTarget('https://example.com'); // -> '_blank'
// 第2引数を指定すると
Link::getTarget('https://example.com/hoge', 'https://example.com'); // -> '_self'
// 第2引数にfalseを指定すると、プロトコルが指定されていれば全て _blank になる
Link::getTarget('https://example.com/hoge', false); // -> '_blank'
Link::getTarget('http://localhost', false); // -> '_blank'URLが外部リンクかどうかを判定する
- 第1引数は、href の値
- 第2引数は、基本となるURLを設定。初期では現在のURLが自動で使われる。
// ルートや相対パスなどの場合は内部認定
Link::isExternalHref('/path/to'); // -> false
Link::isExternalHref('./path/to'); // -> false
// 第2引数を省略すると、アクセスしたホスト名が比較される (想定: http://localhost)
Link::isExternalHref('http://localhost'); // -> false
Link::isExternalHref('https://example.com'); // -> true
// 第2引数を指定すると
Link::isExternalHref('https://example.com/hoge', 'https://example.com'); // -> false
// 第2引数にfalseを指定すると、プロトコルが指定されていれば全て外部リンク扱い
Link::isExternalHref('https://example.com/hoge', false); // -> true
Link::isExternalHref('http://localhost', false); // -> truehrefがサイトURIかどうかを判定する https://, http://, // で始まるURLはサイトURIとみなす。 実在するかどうかは検証しない。
// パス
Link::isSiteHref('/path/to'); // -> false
Link::isSiteHref('./path/to'); // -> false
// プロトコルあり
Link::isSiteHref('https://example.com'); // -> true
Link::isSiteHref('//example.com'); // -> true
// それ以外の書式リンク
Link::isSiteHref('mailto:example@example.com'); // -> falseメールリンクかどうかを判定する mailto: で始まるURLはメールリンクとみなす。
Link::isMailHref('/path/to'); // -> false
Link::isMailHref('https://example.com'); // -> false
Link::isMailHref('mailto:example@example.com'); // -> true
// 電話っぽいやつ
Link::isMailHref('tel:+1234567890'); // -> false電話リンクかどうかを判定する tel: で始まるURLは電話リンクとみなす。
Link::isTelHref('/path/to'); // -> false
Link::isTelHref('https://example.com'); // -> false
Link::isTelHref('tel:+1234567890'); // -> true
// メール
Link::isTelHref('mailto:example@example.com'); // -> false現在のベースURLを推測する
$_SERVER の値を結合するだけ。
よって、CLIなどでは正常に動作しない。
Link::guessBaseUrl(); // -> http://localhostcomposer run testphp psysh.php