fw3 / strings
Flywheel3 框架:字符串处理
Requires
- php: >=7.2.0
- ext-mbstring: *
Requires (Dev)
- phpunit/phpunit: ~10.0.0
This package is auto-updated.
Last update: 2024-09-22 04:47:21 UTC
README
Rapid Development Framework Flywheel3 的字符串处理库。
支持的PHP版本为7.2.0以上。
安装方法
可以使用 composer require fw3/strings
进行安装。
主要功能
StringBuilder - 字符串模板引擎
可以处理类似于PDO中的命名占位符的模板字符串。
可以像Smart或Twig一样修饰变量、在运行时根据变量名动态返回值、从多个变量中找到并填充值等。
Converter - 字符串转换器
可以进行转义、安全的JSON化、大小写转换、变量的字符串表示等操作。
功能详细:StringBuilder
可以对预先格式化的字符串轻松地进行值展开。
<?php
use fw3\strings\builder\StringBuilder;
echo StringBuilder::factory()->build('{:value1}はあります。', [
'value1' => 'VALUE1',
]);
// VALUE1はあります。と表示されます。
当存在某个值作为变量时,也可以实现找到即展开。
<?php
use fw3\strings\builder\StringBuilder;
echo StringBuilder::factory()->build('{:value1:value2}はあります。', [
'value2' => 'VALUE2',
]);
// VALUE2はあります。と表示されます。
也可以像Smart或Twig一样对变量进行修饰。
<?php
use fw3\strings\builder\StringBuilder;
echo StringBuilder::factory()->build('現在の時刻は{:now|date('Y/m/d H:i:s')}です。', [
'now' => strtotime('2020/01/01 00:00:00'),
]);
// 現在の時刻は2020/01/01 00:00:00です。と表示されます。
也可以方便地进行字符串的输出,这对于调试和错误日志处理很有用。
<?php
use fw3\strings\builder\StringBuilder;
echo StringBuilder::factory()->build('値はそれぞれ{:bool|to_debug}、{:null|to_debug}、{:string|to_debug}、{:array|to_debug}、{:array2|to_debug(2)}です。', [
'bool' => false,
'null' => NULL,
'string' => '',
'array' => [[[]]],
'array2' => [[[]]],
]);
// 値はそれぞれfalse、’’、NULL、Array、[0 => [0 => Array]]です。と表示されます。
功能详细:Converter
escape
提供HTML和JavaScript的转义。
如果需要在运行时动态更改转义类型,请使用 escape
。
<?php
use fw3\strings\converter\Convert;
echo Converter::escape('<a href="https://ickx.jp">ickx.jp</a>');
// <a href="https://ickx.jp">ickx.jp</a> と表示されます
echo Convert::escape('alert(\'alert\');');
// alert('alert'); と表示されます
echo Convert::escape('alert(\'alert\');', Convert::ESCAPE_TYPE_JS);
// alert\x28\x27alert\x27\x29\x3b と表示されます
如果明确知道需要转义的特定对象,请使用专门的htmlEscape等处理。
请使用 htmlEscape
进行针对HTML的转义处理。
<?php
use fw3\strings\converter\Convert;
echo Converter::hmlEscape('<a href="https://ickx.jp">ickx.jp</a>');
// <a href="https://ickx.jp">ickx.jp</a> と表示されます
请使用 jsEscape
进行针对JavaScript的转义处理。
<?php
use fw3\strings\converter\Convert;
echo Convert::escape('alert(\'alert\');', Convert::ESCAPE_TYPE_JS);
// alert\x28\x27alert\x27\x29\x3b と表示されます
JSONize
将给定的PHP变量转换为安全的JSON字符串。
<?php
use fw3\strings\converter\Convert;
echo Convert::toJson('alert(\'alert\');');
// alert(\u0027alert\u0027); と表示されます。
大小写转换
可以在SNAKE_CASE、CHAIN-CASE和CamelCase之间进行相互转换。
转换为SNAKE_CASE
<?php
use fw3\strings\converter\Convert;
echo Convert::toSnakeCase('toSnakeCase'); // to_Snake_Case と表示されます
echo Convert::toSnakeCase('ToSnakeCase'); // To_Snake_Case と表示されます
echo Convert::toUpperSnakeCase('toSnakeCase'); // to_snake_case と表示されます
echo Convert::toLowerSnakeCase('toSnakeCase'); // TO_SNAKE_CASE と表示されます
echo Convert::toSnakeCase('to-Snake-Case'); // to_Snake_Case と表示されます
echo Convert::toSnakeCase('to_Snake_Case'); // to_Snake_Case と表示されます
转换为CHAIN_CASE
<?php
use fw3\strings\converter\Convert;
echo Convert::toSnakeCase('toSnakeCase'); // to-Snake-Case と表示されます
echo Convert::toSnakeCase('ToSnakeCase'); // To-Snake-Case と表示されます
echo Convert::toUpperSnakeCase('toSnakeCase'); // to-snake-case と表示されます
echo Convert::toLowerSnakeCase('toSnakeCase'); // TO-SNAKE-CASE と表示されます
echo Convert::toSnakeCase('to-Snake-Case'); // to-Snake-Case と表示されます
echo Convert::toSnakeCase('to_Snake_Case'); // to-Snake-Case と表示されます
转换为CamelCase
<?php
use fw3\strings\converter\Convert;
echo Convert::toSnakeCase('to_Snake_Case'); // toSnakeCase と表示されます
echo Convert::toSnakeCase('To_snake_case'); // ToSnakeCase と表示されます
echo Convert::toUpperSnakeCase('to_Snake_Case'); // toSnakeCase と表示されます
echo Convert::toLowerSnakeCase('to_Snake_Case'); // ToSnakeCase と表示されます
echo Convert::toSnakeCase('to-Snake-Case'); // toSnakeCase と表示されます
echo Convert::toSnakeCase('to_Snake_Case'); // toSnakeCase と表示されます
变量信息展开
将变量信息转换为字符串。
当需要快速查看变量的实际状态或将状态记录在日志中时,这非常有用。
可以指定深度以限制数组等分层结构的值。
实际应用的案例包括当字符串化false或null等值时变成空字符串的情况,或者快速识别数值是否为字符串或整数的情况等。
<?php
use fw3\strings\converter\Convert;
echo Convert::toDebugString(true); // true と表示されます
echo Convert::toDebugString(false); // false と表示されます
echo Convert::toDebugString(null); // null と表示されます
echo Convert::toDebugString(0.0); // 0.0 と表示されます
echo Convert::toDebugString(0.1); // 0.1 と表示されます
echo Convert::toDebugString(0); // 0 と表示されます
echo Convert::toDebugString('0'); // '0' と表示されます
echo Convert::toDebugString([0 => [], 'a' => [1, 2]]); // Array と表示されます
echo Convert::toDebugString([], 1); // [0 => Array, 'a' => Array] と表示されます
echo Convert::toDebugString(new stdClass()); // object((stdClass)#381) と表示されます #381の箇所は実行環境により異なります