此库是一个包装器,可以将字符串转换为另一个字符串(日期格式转换为另一种格式,字符串,正则表达式等)
Requires
- php: >=5.3
- cocur/slugify: ^1.2
- ramsey/uuid: ^2.9
Requires (Dev)
- phpunit/phpunit: ~4.0
- symfony/filesystem: ^2.8
Suggests
- fabpot/php-cs-fixer: Fix PSR2 and other coding style issues
README
inetprocess/转换
受Respect/Validation启发,该库在应用规则后,将输入字符串(或浮点数/整数/布尔值)转换为输出字符串。
使用它的好处是,它是一个通用的转换包装器。它还抛出异常,并允许链式转换。
用法
使用很简单。假设你需要将日期“31-12-2012”转换为另一种格式,例如“2012-12-31”。只需这样做
<?php require_once __DIR__ . '/vendor/autoload.php'; use Inet\Transformation\Transform as T; $dateEntered = '31-12-2012'; $output = T::Date('d-m-Y', 'Y-m-d')->transform($dateEntered); echo $output;
现在,如果你需要更改格式,请更改时区
<?php require_once __DIR__ . '/vendor/autoload.php'; use Inet\Transformation\Transform as T; $dateEntered = '31-12-2012 23:21:58'; $output = T::Date('d-m-Y H:i:s', 'Y-m-d H:i:s')->Timezone('Y-m-d H:i:s', 'Asia/Calcutta')->transform($dateEntered); // Displays: 2013-01-01 03:51:58 echo $output;
转换规则
目前只有少数规则。稍后我会添加更多,如果你愿意贡献,请不要犹豫。
Callback(string $functionName, [$param1, $param2, ...])
在输入上调用任何PHP函数。输入将作为函数的最后一个参数传递。
T::Callback('sprintf', "REF%'06d")->transform(1234); // REF001234
CopyFileToUuid(string $sourceDir, string $destinationDir)
将文件(具有文件名)复制到由UUID生成的名称。返回生成的UUID。
T::CopyFileToUuid('/var/www/upload/', '/var/www/unified_upload')->transform('quotes/client_01.pdf'); // 123e4567-e89b-12d3-a456-426655440000 ## Concat(string $before, [string $after]) Append and prepend string to input. ```php T::Concat('REF')->transform('1234'); // REF1234 T::Concat('REF', 'AB')->transform('1234'); // REF1234AB
Date(string $inputFormat, string $outputFormat)
将日期从一种格式转换为另一种格式。
见上面示例
Explode(string $delimiter)
使用分隔符将字符串分解为数组。使用PHP中的explode函数。它返回一个数组。
T::Explode(',')->transform('foo,bar,baz'); // array('foo', 'bar', 'baz'); T::Explode(',')->Implode('|')->transform('foo,bar,baz'); // foo|bar|baz
Htmlspecialchars([array $flags, string $encoding, bool $double_encoding])
编码特殊字符。使用PHP中的htmlspecialchars函数。
T::Htmlspecialchars(['ENT_QUOTES'])->transform("l'arbre"); // l'arbre T::Htmlspecialchars(['ENT_QUOTES'], 'UTF-8', false)->transform("l'arbre"); // l'arbre
HtmlspecialcharsDecode([array $flags])
解码特殊字符。使用PHP中的htmlspecialchars_decode函数。
T::HtmlspecialcharsDecode(['ENT_QUOTES'])->transform("l'arbre"); // l'arbre
Implode(string $delimiter)
使用PHP中的implode函数将数组元素连接为一个字符串。
T::Implode('@')->transform(array('foo', 'bar')); // foo@bar
Map(array $mapping)
尝试用映射中的值替换输入。它也可以与数组作为输入一起使用。在映射中找不到的值将返回而不进行转换
$mapping = array( '1' => 'key1', '10' => 'key10', ); T::Map($mapping)->transform('1'); // key1 T::Map($mapping)->transform(array('10', '1')); // array('key10', 'key1') T::Map($mapping)->transform('unknown key'); // unknown key
MimeType([string $root])
返回文件的MIME类型。第一个可选参数允许指定要添加到文件名之前的根目录。
T::MimeType()->transform('test.jpg'); // image/jpeg T::MimeType('uploads')->transform('logo.png'); // image/png
NormalizeURL(string $protocol)
如果不存在,则向任何URL添加默认协议。
T::NormalizeURL('http')->transform('https://www.google.com'); // https://www.google.com T::NormalizeURL('http')->transform('www.google.com'); // http://www.google.com T::NormalizeURL('http')->transform('ssh://github.com'); // ssh://github.com T::NormalizeURL('ssh')->transform('github.com'); // ssh://github.com
Replace(string $search, string $replace)
将一个字符串替换为另一个字符串(与str_replace相同)。
T::Replace('a', 'b')->transform('ababa'); // bbbbb
ReplaceRegexp(string $pattern, string $replacement)
将一个模式替换为替换(与preg_replace相同)。
T::ReplaceRegexp('/^fox/', 'rabbit')->transform('fox and foxes'); // rabbit and foxes
Slugify()
使用Cocur\Slugify将字符串转为URL友好格式。
T::Slugify()->transform('Bonjour tôôut le monde !'); // bonjour-toout-le-monde
SetType()
使用PHP中的settype进行类型转换。
T::SetType('bool')->transform('1'); // true T::SetType('bool')->transform('0'); // false T::SetType('bool')->transform(array()); // false
SugarCRMMapMultiEnum(array $mapping, [array $options])
将字符串或数组中的多个值映射,并返回一个字符串,该字符串适合存储SugarCRM多枚举字段。首先使用默认分隔符|
将字符串分解。可以设置以下选项
separator
: 用于分解输入字符串的分隔符。默认:|
from_multi_enum
: 如果为true,则将输入字符串解析为SugarCRM多枚举字段。默认:false
$mapping = array( '1' => 'key1', '10' => 'key10', ); T::SugarCRMMapMultiEnum($mapping)->transform('1|10'); // ^key1^,^key10^ T::SugarCRMMapMultiEnum($mapping)->transform(array('1', '10'); // ^key1^,^key10^ T::SugarCRMMapMultiEnum($mapping)->transform('^1^,^23^', array('from_multi_enum' => true)); // ^key1^,^23^
Timezone(string $inputFormat, string $targetTimezone, [string $currentTimezone])
通过提供格式、目标时区和可选的当前时区来更改日期的时区。
见上面示例