[扩展推荐] PHP 字符串操作类 Twine

file

Twine 是一个由 Chris Kankiewicz 为字符串开发的独立的 PHP 7 扩展包,它使用一套富有表现力的流体语法来操作和比较字符串。

下面是一些基本使用和转换方法的示例:

use PHLAK\Twine;

$string = new Twine\Str('john pinkerton');

$string->substring(5, 4); // Returns 'pink'
$string->pad(20, '_');  // Returns 'john pinkerton______'
$string->pad(20, '_', Twine\Config\Pad::LEFT); // Returns '______john pinkerton'
$string->pad(20, '_', Twine\Config\Pad::BOTH); // Returns '___john pinkerton___'

// 别名
$string->padLeft(20, '_');
$string->padRight(20, '_');
$string->padBoth(20, '_');

转换为大写为你提供了一些不同的选项, 比如将整个字符串转换、只转换第一个字母以及每个单词的第一个字母:

$string = new Twine\Str('john pinkerton');

// 转换为大写
$string->uppercase(); // Returns 'JOHN PINKERTON'
$string->uppercase(Twine\Config\Uppercase::FIRST); // Returns 'John pinkerton'
$string->uppercase(Twine\Config\Uppercase::WORDS); // Returns 'John Pinkerton'

//只转换第一个字母或转换每个单词首字母这两个方法的别名
$string->uppercaseFirst();
$string->uppercaseWords();

Twine 提供了多种方法来一不同的方式来验证字符串的差异:

$string = new Twine\Str('john pinkerton');

$string->startsWith('pink'); // false
$string->endsWith('ton'); // true
$string->contains('pin'); // true

$string->equals('JoHN PiNKeRToN', Twine\Config\Equals::CASE_INSENSITIVE); // Returns true
// 别名
$string->insensitiveMatch('JoHN PiNKeRToN'); // true

你可以使用  base64() 方法对字符串进行编码并且可以生成各种哈希散列:

$string = new Twine\Str('john pinkerton');

$string->base64(); // 返回'am9obiBwaW5rZXJ0b24='
$string->md5(); // 返回 '30cac4703a16a2201ec5cafbd600d803'
$string->sha1(); // 返回 'fcaf28c7705ba8f267472bb5aa8ad883f6bf0427'
$string->sha256(); // 返回 '7434f26c8c2fc83e57347feb2dfb235c2f47b149b54b80692beca9d565159dfd'

format() 方式看起来很简洁,它允许你使用相同的格式化文本创建多个字符串:

$string = new Twine\Str('Hello %s! Welcome to %s, population %b.');

$string->format('John', 'Pinkertown', 1337);
// Returns 'Hello John! Welcome to Pinkertown, population 10100111001.'

这个库的另一个很酷的技巧是链接方式,甚至在链接之后可以进行断言:

$string = new Twine\Str('john pinkerton');

$string->substring(5, 4)->equals('pink'); // 返回 true

了解更多

这个库中有很多字符串方法,鼓励您查看GitHub repo 在自述文件中找到完整的 API. 你可以通过 phlak/twine的 composer 安装它.

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://laravel-news.com/twine-string-ma...

译文地址:https://learnku.com/laravel/t/14965/exte...

本帖已被设为精华帖!
本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 8

难怪别人吐槽php性能,原来是有原因的。。。

5年前 评论

@839891627 不太理解,你所说的性能 :joy:

5年前 评论

@benettzhang 额 过度封装呀。原生字符串函数还搞这么复杂。。

5年前 评论
xingchen

这个操作也许会用得上

5年前 评论

@839891627 倒不觉得是过度封装,这种富有表现力的工具库其实能让代码写得更干净一些,并且统一了一些异常处理的问题。

只是需要一点学习成本……

web 开发的性能问题主要还是在数据库上面

5年前 评论
JaguarJack

还是用函数吧。个人认为比这个好

5年前 评论

作者的示例好很多,楼主的几个例子没体现出优势

5年前 评论

Laravel自带的Str类也不错

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!