fw3/strings

Flywheel3 框架:字符串处理

1.0.1 2023-06-22 01:55 UTC

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 进行安装。

Packagist

主要功能

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>');
// &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等处理。

请使用 htmlEscape 进行针对HTML的转义处理。

<?php

use fw3\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; と表示されます

请使用 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の箇所は実行環境により異なります