javiereguiluz/easyslugger

一个快速且易于使用的slug生成器,完全支持UTF-8。

v1.0.0 2015-04-12 19:57 UTC

This package is auto-updated.

Last update: 2024-09-05 20:29:20 UTC


README

Build Status SensioLabsInsight

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,结合了 Utf8SluggerSeoSlugger,以增强并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

SeoSluggerSeoUtf8Slugger 还定义了 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