fw3_for_old/strings

Flywheel3 框架:适用于旧 PHP 版本的字符串处理库

1.0.19 2022-12-18 11:53 UTC

This package is auto-updated.

Last update: 2024-09-18 15:15:38 UTC


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>');
// &lt;a href=&quot;https://ickx.jp&quot;&gt;ickx.jp&lt;/a&gt; と表示されます

echo Convert::escape('alert(\'alert\');');
// alert(&apos;alert&apos;); と表示されます

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>');
// &lt;a href=&quot;https://ickx.jp&quot;&gt;ickx.jp&lt;/a&gt; と表示されます

专门针对 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の箇所は実行環境により異なります