一、背景
最近在学习laravel 5.5的相关新特性,偶然间发现了几个不错的字符串辅助函数。分享给大家。
二、相关函数
1、Str::start() 辅助方法
如果字符串没有以给定值开头的话 str_start 函数会将给定值添加到字符串最前面,这个辅助方法可以确保字符串只是由某个特定的值开始。
我们假设你有一个 API baseUrl,你通常需要移除尾部的斜杠来规范 URL:
<?php
// rtrim 从字符串右侧移除字符: rtrim(str,参数);
//rtrim的第一个参数为字符串,第二个参数为要移除的部分
return [
'my_api' => [
'base_url' => rtrim(env('MY_API_BASE_URL'), '/'),
],
];
之后,当你需要规范路径避免出现多个斜杠的时候,可能需要执行以下操作:
<?php
// ltrim 从字符串左侧移除字符: ltrim(str,参数);
//ltrim的第一个参数为字符串,第二个参数为要移除的部分
return config('my_api.base_url') . '/' . ltrim($path, '/')
?>
现在,通过 Str::start() 及其辅助方法 str_start(),你可以这样规范路径:
<?php
// 这部分,我们通过str_start()函数,规定字符串$path的开头部分以'/'开始,
//如此便可避免上面的移除操作
$path = '//example';
config('my_api.base_url') . str_start($path, '/');
// -> https://my-api.com/example
2、Str::before() 辅助方法
获取字符串中,你给定值之前的部分。类似于分割字符串的操作。只不过这个用起来更简单一些。
假设你想得到邮箱地址最开始的部分:
<?php
// 这部分,@为你给定的一个值,获取@之前的部分
str_before('jane@example.com', '@');
// -> jane
3、Str::after() 辅助方法
Str::after() 会返回字符串中给定某个值之后的所有内容。还是用邮箱地址的例子来说,假设我们只想获取邮箱地址的主机名:
<?php
str_after('jane@example.com', '@')
// -> example.com
三、其他的辅助函数
参考官方文档:
laravel 5.5的辅助函数
这些辅助函数包括,操作数组,字符串,URL,路径等,在实际开发中可以省去不少的时间,大家可以去看看。
end