easybook / slugger
一个快速且易于使用的slugger,支持完整的UTF-8。
Requires
- php: >=5.3.3
This package is not auto-updated.
Last update: 2019-02-20 17:55:41 UTC
README
slugger 是一个快速PHP库,用于生成 slugs,允许将任何字符串安全地包含在URL中。slugs通常用于CMS、博客和其他内容相关平台。
安装
安装 slugger 最简单的方法是将此库作为您项目的依赖项,使用 Composer
$ cd your-project/
$ composer require easybook/slugger 1.*
如果您愿意,可以手动将新依赖项添加到您的 composer.json
文件中,然后执行 composer update
命令来更新您的依赖项
{ "name" : "...", "description" : "...", "require": { "php" : ">=5.3.3", "easybook/slugger" : "1.0.*" } }
生成slugs
大多数slugger库包含许多设置来配置如何生成slugs。 slugger 采用不同的方法,以提供出色的性能和足够的灵活性:它包括四个不同的slugger类!
Slugger
,适用于大多数欧洲语言的快速slugs。Utf8Slugger
,符合UTF-8的slugger,适用于任何字母表(包括日语、阿拉伯语和希伯来语)。它需要PHP 5.4.0或更高版本。SeoSlugger
,高级slugger,在将字符串转换为slugs之前对其进行增强。例如,字符串产品 #3 售价 $9.99
转换为产品-编号-3-售价-9-美元-99-美分
。SeoUtf8Slugger
,将Utf8Slugger
和SeoSlugger
结合起来,增强和slugify任何UTF-8字符串。
所有slugger都实现了 SluggerInterface
接口,这使得您可以在项目中安全地在不同的slugger之间切换。
生成基本slugs
生成slugs最简单的方法是使用 Slugger
类的 slugify()
方法
use Easybook\Slugger; $slugger = new Slugger(); $slug = $slugger->slugify('Lorem Ipsum'); // slug = lorem-ipsum
如果您使用PHP 5.5.0或更高版本,您可以一行代码生成slugs
$slugger = (new \Easybook\Slugger())->slugify('Lorem Ipsum');
生成唯一的slugs
如果您需要确保在应用程序执行期间生成的slugs的唯一性,请使用 uniqueSlugify()
,它会将随机后缀追加到slugs上
use Easybook\Slugger; $slugger = new Slugger(); $slug = $slugger->uniqueSlugify('Lorem Ipsum'); // slug = lorem-ipsum-a2b342f
请注意,唯一slugs的生成是非确定性的,这意味着附加的后缀是随机的,并且它会在每次应用程序执行时更改,即使使用相同的输入字符串。
如果您想将自动递增的数字后缀追加到slugs上,您需要开发自己的自定义解决方案。
为复杂语言生成slugs
如果字符串包含属于复杂语言(如阿拉伯语、希伯来语和日语)的字符,应使用 Utf8Slugger
类。此slugger需要PHP 5.4.0或更高版本,因为它使用内置的PHP转写器。
use Easybook\Utf8Slugger; $slugger = new Utf8lugger(); $slug = $slugger->slugify('日一国会'); // slug = ri-yi-guo-hui $slug = $slugger->slugify('ضطظع'); // slug = fqklmnhwyy $slug = $slugger->slugify('נסעףפ'); // slug = wwwyyy
Utf8Slugger
还定义了 uniqueSlugify()
以生成唯一slugs。
生成SEO slugs
SeoSlugger
(以及相关的SeoUtf8Slugger
)在将字符串转换为短链接之前会增强这些字符串。这些转换与数字、货币、电子邮件地址和其他常见符号相关。
use Easybook\SeoSlugger; $slugger = new SeoSlugger(); $slug = $slugger->slugify('The price is $5.99'); // slug = the-price-is-5-dollars-99-cents $slug = $slugger->slugify('Use lorem@ipsum.com to get a 10% discount'); // slug = use-lorem-at-ipsum-dot-com-to-get-a-10-percent-discount $slug = $slugger->slugify('Gravity = 9.81 m/s2'); // slug = gravity-equals-9-dot-81-m-s2
SeoSlugger
和SeoUtf8Slugger
还定义了uniqueSlugify()
函数来生成唯一的短链接。
配置选项
slugger定义的唯一配置选项是用于分隔每个短链接部分的separator
字符(或字符串)。首先,您可以使用类构造函数全局设置此参数。
use Easybook\Slugger; $slugger = new Slugger(); $slug = $slugger->slugify('Lorem Ipsum'); // slug = lorem-ipsum $slugger = new Slugger('_'); $slug = $slugger->slugify('Lorem Ipsum'); // slug = lorem_ipsum $slugger = new Slugger(''); $slug = $slugger->slugify('Lorem Ipsum'); // slug = loremipsum
您还可以将此参数设置为slugify()
和uniqueSlugify()
方法的第二个可选参数。此参数始终覆盖由类设置的任何全局参数。
use Easybook\Slugger; $slugger = new Slugger(); $slug = $slugger->slugify('Lorem Ipsum', '_'); // slug = lorem_ipsum $slug = $slugger->slugify('Lorem Ipsum', ''); // slug = loremipsum $slugger = new Slugger('+'); $slug = $slugger->slugify('Lorem Ipsum', '_'); // slug = lorem_ipsum
许可证
slugger库采用MIT许可证。
测试
该库已经完全单元测试。如果您已安装PHPUnit,则可以通过执行phpunit
命令来运行完整的测试套件。
$ cd slugger/
$ phpunit
PHPUnit 3.7.32 by Sebastian Bergmann.
Configuration read from slugger/phpunit.xml.dist
......................................................... 63 / 103 ( 61%)
........................................
Time: 2.12 seconds, Memory: 2.00Mb
OK (103 tests, 499 assertions)
代码质量保证
SensioLabs Insight | Travis CI | Scrutinizer CI |
---|---|---|