fw3_for_old / strings
Flywheel3 框架:适用于旧 PHP 版本的字符串处理库
Requires
- php: >=5.3.3
- ext-mbstring: *
- fw3_for_old/ez_test: >=1.0.0
README
Rapid Development Framework Flywheel3 的字符串处理库。
在fw3/strings: Flywheel3 strings processing library中公开的 StringBuilder,在 PHP5.3.3 及以上版本也能运行的实用流过滤。
如果您希望轻松快速使用,请参考 配置等注意事项 和 使用方法。
如果不需要对 PHP7.2.0 以下的版本进行兼容处理,请使用 fw3/strings。
目标版本及测试版本
目标版本:PHP5.3.3 及以上
测试版本
- 5.3.3
- 5.3.4
- 5.3.5
- 5.3.6
- 5.3.7
- 5.3.8
- 5.3.9
- 5.4.16
- 5.4.39
- 5.4.45
- 5.5.38
- 5.6.40
- 7.0.33
- 7.1.33
- 7.2.33
- 7.3.21
- 7.4.0
- 7.4.9
- 8.0.0beta2
配置等注意事项
Windows (php7.2.0 以下)
请取消注释 php.ini 中以下行的注释。
- ; extension_dir = "ext" + extension_dir = "ext"
- ;extension=php_mbstring.dll + extension=php_mbstring.dll
Windows (php7.2.0 以上)
请取消注释 php.ini 中以下行的注释。
- ; extension_dir = "ext" + extension_dir = "ext"
- ;extension=mbstring + extension=mbstring
Linux 系 (使用包管理器)
请使用各种包管理器安装 php-mbstring 或类似项。
Linux 系 (使用 phpenv)
请向 default_configure_options 或各个 definition 添加以下之一。
--enable-mbstring
Linux 系 (从源代码构建)
请向 configure 选项添加以下之一。详细信息请参考PHP 手册 函数参考 自然语言和字符编码 多字节字符串 安装/设置。
--enable-mbstring
使用方法
1. 安装
如果您可以在环境中使用 composer
执行以下命令进行安装。
composer require fw3_for_old/strings
如果您不能使用 composer
从 Download ZIP 下载 zip 文件,并将其复制到任意目录。
请确保在要使用的目标处理之前,以 require_once sprintf('%s/src/strings_require_once.php', $path_to_copy_dir); 的形式读取 src/strings_require_once.php。
主要功能
StringBuilder - 字符串模板引擎
可以处理类似 PDO 中的命名占位符的模板字符串。
可以像 Smart 或 Twig 一样修饰变量、在运行时动态返回变量值,或者从多个变量中动态填充值。
Converter - 字符串转换器
可以进行转义、安全的 JSON 化、大小写转换以及变量字符串表示。
功能详细:StringBuilder
可以对预先格式化的字符串进行轻松的值替换。
<?php
use fw3_for_old\strings\builder\StringBuilder;
echo StringBuilder::factory()->build('{:value1}はあります。', [
'value1' => 'VALUE1',
]);
// VALUE1はあります。と表示されます。
如果存在某个值作为变量,可以在找到后进行替换。
<?php
use fw3_for_old\strings\builder\StringBuilder;
echo StringBuilder::factory()->build('{:value1:value2}はあります。', [
'value2' => 'VALUE2',
]);
// VALUE2はあります。と表示されます。
也可以像 Smart 或 Twig 一样对变量进行修饰。
<?php
use fw3_for_old\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_for_old\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_for_old\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 等。
专门针对 HTML 的转义处理请使用 htmlEscape。
<?php
use fw3_for_old\strings\converter\Convert;
echo Converter::hmlEscape('<a href="https://ickx.jp">ickx.jp</a>');
// <a href="https://ickx.jp">ickx.jp</a> と表示されます
专门针对 JavaScript 的转义处理请使用 jsEscape。
<?php
use fw3_for_old\strings\converter\Convert;
echo Convert::escape('alert(\'alert\');', Convert::ESCAPE_TYPE_JS);
// alert\x28\x27alert\x27\x29\x3b と表示されます
JSONize
将给定的 PHP 变量转换为安全的 JSON 字符串。
<?php
use fw3_for_old\strings\converter\Convert;
echo Convert::toJson('alert(\'alert\');');
// alert(\u0027alert\u0027); と表示されます。
大小写转换
在 SNAKE_CASE、CHAIN_CASE 和 CamelCase 之间进行相互转换。
转换为 SNAKE_CASE
<?php
use fw3_for_old\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_for_old\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_for_old\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_for_old\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の箇所は実行環境により異なります