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

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 安装它.


Practice makes perfect.

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

译文地址:https://laravel-china.org/topics/14965/e...

本帖已被设为精华帖!
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 8

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

4个月前
benettzhang

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

4个月前

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

4个月前

这个操作也许会用得上

4个月前

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

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

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

4个月前

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

3个月前

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

3个月前

Laravel自带的Str类也不错

3个月前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!