easybook/slugger

此包已被废弃,不再维护。作者建议使用 javiereguiluz/slugger 包。

一个快速且易于使用的slugger,支持完整的UTF-8。

1.0.0 2014-04-08 20:29 UTC

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,将 Utf8SluggerSeoSlugger 结合起来,增强和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

SeoSluggerSeoUtf8Slugger还定义了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
SensioLabsInsight Travis CI status Scrutinizer Quality Score