javiereguiluz / easyslugger
一个快速且易于使用的slug生成器,完全支持UTF-8。
Requires
- php: >=5.3.3
This package is auto-updated.
Last update: 2024-09-05 20:29:20 UTC
README
EasySlugger 是一个快速且易于使用的PHP库,用于生成slug,允许安全地将任何字符串作为URL的一部分。Slugs通常用于CMS、博客和其他与内容相关的平台。
安装
使用 Composer 将此库添加为项目的依赖项
$ cd your-project/
$ composer require javiereguiluz/easyslugger
生成slug
大多数slugger库包括许多设置来配置如何生成slug。 EasySlugger 采用了不同的方法,以提供优异的性能和灵活性:它包括四个不同的slugger类!
Slugger
,适用于大多数欧洲语言的快速slug。Utf8Slugger
,适用于任何字母表(包括日语、阿拉伯语和希伯来语)的UTF-8兼容slugger。它需要PHP 5.4.0或更高版本。SeoSlugger
,增强字符串后再将其转换为slug的高级slugger。例如,字符串产品 #3售价9.99美元
将转换为the-product-number-3-costs-9-dollars-99-cents
。SeoUtf8Slugger
,结合了Utf8Slugger
和SeoSlugger
,以增强并slugify任何UTF-8字符串。
所有slugger都实现了 SluggerInterface
,这允许您在项目中安全地在不同的slugger之间切换。
生成基本slug
生成slug最简单的方法是使用 Slugger
类的 slugify()
方法
use EasySlugger\Slugger; $slug = Slugger::slugify('Lorem Ipsum'); // slug = lorem-ipsum
您也可以实例化 Slugger
类以非静态方式使用它
// PHP 5.4 or lower use EasySlugger\Slugger; $slugger = new Slugger(); $slug = $slugger->slugify('Lorem Ipsum'); // slug = lorem-ipsum // PHP 5.5 or higher $slugger = (new \EasySlugger\Slugger())->slugify('Lorem Ipsum');
生成唯一slug
如果您需要确保在应用程序执行过程中生成的slug的唯一性,请使用 uniqueSlugify()
方法,该方法会在slug后追加一个随机后缀
use EasySlugger\Slugger; $slug = Slugger::uniqueSlugify('Lorem Ipsum'); // slug = lorem-ipsum-a2b342f
唯一的slug是非确定性的,这意味着追加的后缀是随机的,并且它会在每次应用程序执行时更改,即使使用相同的输入字符串。如果您想要在slug后追加一个自动递增的数字后缀,您需要开发自己的自定义解决方案。
生成非拉丁字母表的slug
如果字符串包含属于非拉丁字母表(如阿拉伯语、希伯来语和日语)的字符,您应使用 Utf8Slugger
类。此slugger需要PHP 5.4.0或更高版本,因为它使用了内置的PHP转写器
use EasySlugger\Utf8Slugger; $slug = Utf8Slugger::slugify('日本語'); // slug = ri-ben-yu $slug = Utf8Slugger::slugify('العَرَبِيةُ'); // slug = alrbyt $slug = Utf8Slugger::slugify('עברית'); // slug = bryt
Utf8Slugger
还定义了 uniqueSlugify()
以生成唯一的slug。
生成SEO slug
SeoSlugger
(及相关 SeoUtf8Slugger
)在将字符串转换为slug之前对其进行增强。转换与数字、货币、电子邮件地址和其他常见符号有关
use EasySlugger\SeoSlugger; $slug = SeoSlugger::slugify('The price is $5.99'); // slug = the-price-is-5-dollars-99-cents $slug = SeoSlugger::slugify('Use [email protected] to get a 10% discount'); // slug = use-lorem-at-ipsum-dot-com-to-get-a-10-percent-discount $slug = SeoSlugger::slugify('Gravity = 9.81 m/s2'); // slug = gravity-equals-9-dot-81-m-s2
SeoSlugger
和 SeoUtf8Slugger
还定义了 uniqueSlugify()
以生成唯一的slug。
配置选项
可用的唯一配置选项是用于分隔每个slug部分的 separator
字符(或字符串)。首先,您可以使用类构造函数全局设置此参数
use EasySlugger\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 EasySlugger\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
许可
此库根据 MIT许可 许可。
测试
该库已完全单元测试。如果您已安装 PHPUnit,则执行 phpunit
命令以运行完整的测试套件
$ cd easyslugger/
$ composer install
$ phpunit