cocur / slugify
将字符串转换为缩略语。
Requires
- php: ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0
- ext-mbstring: *
Requires (Dev)
- laravel/framework: ^5.0|^6.0|^7.0|^8.0
- latte/latte: ~2.2
- league/container: ^2.2.0
- mikey179/vfsstream: ~1.6.8
- mockery/mockery: ^1.3
- nette/di: ~2.4
- pimple/pimple: ~1.1
- plumphp/plum: ~0.1
- symfony/config: ^3.4 || ^4.3 || ^5.0 || ^6.0
- symfony/dependency-injection: ^3.4 || ^4.3 || ^5.0 || ^6.0
- symfony/http-kernel: ^3.4 || ^4.3 || ^5.0 || ^6.0
- symfony/phpunit-bridge: ^5.4 || ^6.0
- twig/twig: ^2.12.1 || ~3.0
- zendframework/zend-modulemanager: ~2.2
- zendframework/zend-servicemanager: ~2.2
- zendframework/zend-view: ~2.2
Conflicts
- symfony/config: <3.4 || >=4,<4.3
- symfony/dependency-injection: <3.4 || >=4,<4.3
- symfony/http-kernel: <3.4 || >=4,<4.3
- twig/twig: <2.12.1
- dev-main
- dev-master
- v4.6.0
- v4.5.1
- v4.5.0
- 4.4.x-dev
- v4.4.1
- v4.4.0
- 4.3.x-dev
- v4.3.0
- v4.2.0
- v4.1.0
- 4.0.0.x-dev
- v4.0.0
- 3.2.x-dev
- v3.2
- 3.1.x-dev
- v3.1
- 3.0.x-dev
- v3.0.1
- v3.0
- 2.5.x-dev
- v2.5
- 2.4.x-dev
- v2.4
- 2.3.x-dev
- v2.3
- 2.2.x-dev
- v2.2
- 2.1.x-dev
- v2.1.1
- v2.1
- 2.0.x-dev
- v2.0
- 1.4.x-dev
- v1.4.1
- v1.4
- 1.3.x-dev
- v1.3
- 1.2.x-dev
- v1.2
- 1.1.x-dev
- v1.1
- 1.0.x-dev
- v1.0
- 0.11.x-dev
- v0.11
- 0.10.x-dev
- v0.10.3
- v0.10.2
- v0.10.1
- v0.10
- v0.9
- v0.8
- v0.7
- v0.6
- v0.5
- 0.4.x-dev
- v0.4.1
- v0.4
- 0.3.x-dev
- v0.3
- v0.2.3
- v0.2.2
- v0.2.1
- v0.2
- v0.1.1
- v0.1
- dev-release/4.6.0
- dev-release-4.2
This package is auto-updated.
Last update: 2024-09-10 14:11:12 UTC
README
将字符串转换为缩略语。
由Florian Eckerstorfer在奥地利维也纳开发,得到了许多优秀贡献者的帮助。
功能
- 从字符串中删除所有特殊字符。
- 提供阿拉伯语、奥地利语、阿塞拜疆语、巴西葡萄牙语、保加利亚语、缅甸语、中文、克罗地亚语、捷克语、世界语、爱沙尼亚语、芬兰语、法语、格鲁吉亚语、德语、希腊语、印地语、匈牙利语、意大利语、拉脱维亚语、立陶宛语、马其顿语、挪威语、波兰语、罗马尼亚语、俄语、塞尔维亚语、西班牙语、瑞典语、土耳其语、乌克兰语、越南语和意第绪语的特殊字符的定制替换。不是删除这些字符,而是使用Slugify进行近似(例如,
ae
替换ä
)。 - 没有外部依赖。
- PSR-4兼容。
- 兼容PHP >= 8。
- 与Symfony (3, 4和5)、Laravel、Twig (2和3)、Zend Framework 2、Nette Framework、Latte和Plum等集成。
安装
您可以通过Composer安装Slugify。
composer require cocur/slugify
Slugify需要PHP的多字节字符串扩展。通常您可以在编译PHP时使用配置选项--enable-mbstring
。更多信息可以在PHP文档中找到。
可能还需要进行集成的额外步骤。
使用
生成缩略语
use Cocur\Slugify\Slugify; $slugify = new Slugify(); echo $slugify->slugify("Hello World!"); // hello-world
您也可以更改Slugify
使用的分隔符
echo $slugify->slugify("Hello World!", "_"); // hello_world
库还包含Cocur\Slugify\SlugifyInterface
。当您需要为Slugify
实例类型提示时,请使用此接口。
要添加额外的转写规则,您可以使用addRule()
方法。
$slugify->addRule("i", "ey"); echo $slugify->slugify("Hi"); // hey
规则集
Slugify中使用的许多转写规则是特定于语言的。因此,这些规则被分类使用规则集。默认情况下,按照特定顺序激活最常见的规则集。您可以更改激活的规则集及其激活顺序。当不同语言中有冲突的规则时,顺序很重要。例如,在德语中ä
使用ae
转写,在土耳其语中正确的转写是a
。默认情况下使用德语转写,因为德语在互联网上使用得更频繁。如果您想优先使用土耳其语转写,有两种方法。您可以在创建构造函数后激活它
$slugify = new Slugify(); $slugify->slugify("ä"); // -> "ae" $slugify->activateRuleSet("turkish"); $slugify->slugify("ä"); // -> "a"
另一种方法是向构造函数传递规则集及其顺序。
$slugify = new Slugify(["rulesets" => ["default", "turkish"]]); $slugify->slugify("ä"); // -> "a"
您可以在Resources/rules中找到可用的规则集列表。
更多选项
构造函数接收一个选项数组,您已经在上面的代码中看到了rulesets
选项。您还可以更改用于替换字符的分隔符的正则表达式。
$slugify = new Slugify(["regexp" => "/([^A-Za-z0-9]|-)+/"]);
(上面示例中使用的是默认的正则表达式。)
默认情况下,Slugify会将别名转换为小写。如果您想保留字符串的大小写,可以将lowercase
选项设置为false。
$slugify = new Slugify(["lowercase" => false]); $slugify->slugify("Hello World"); // -> "Hello-World"
在应用正则表达式之前执行小写化。如果您想保持小写化行为,但您的正则表达式需要匹配大写字母,可以将lowercase_after_regexp
选项设置为true
。
$slugify = new Slugify([ "regexp" => "/(?<=[[:^upper:]])(?=[[:upper:]])/", "lowercase_after_regexp" => false, ]); $slugify->slugify("FooBar"); // -> "foo-bar"
默认情况下,Slugify将使用破折号作为分隔符。如果您想使用不同的默认分隔符,可以将separator
选项进行设置。
$slugify = new Slugify(["separator" => "_"]); $slugify->slugify("Hello World"); // -> "hello_world"
默认情况下,Slugify将在返回别名之前移除前导和尾随的分隔符。如果您不希望别名被修剪,可以将trim
选项设置为false。
$slugify = new Slugify(["trim" => false]); $slugify->slugify("Hello World "); // -> "hello-world-"
动态更改选项
您可以通过将选项数组作为slugify()
方法的第二个参数传递,动态地覆盖上述任何选项。例如
$slugify = new Slugify(); $slugify->slugify("Hello World", ["lowercase" => false]); // -> "Hello-World"
您也可以这样修改分隔符
$slugify = new Slugify(); $slugify->slugify("Hello World", ["separator" => "_"]); // -> "hello_world"
您甚至可以激活一个自定义规则集,而不必触及默认规则
$slugify = new Slugify(); $slugify->slugify("für", ["ruleset" => "turkish"]); // -> "fur" $slugify->slugify("für"); // -> "fuer"
贡献
如果您在转写中报告错误和错误,我们将非常感激,尤其是如果您是该语言的母语人士并有疑问。请在问题中随意要求更多语言,但请注意,该存储库的维护者不会说所有语言。如果您能提供带有新语言规则的拉取请求或扩展现有语言的规则,那将是惊人的。
要添加新语言,您需要
- 在
Resources/rules
中创建一个[language].json
- 如果您认为该语言应该是默认规则集,可以将该语言添加到
Cocur\Slugify\Slugify::$options
中。如果您将其添加到那里,所有现有的测试都必须通过 - 运行
php bin/generate-default.php
- 在
tests/SlugifyTest.php
中为语言添加测试。如果语言在默认规则集中,请将您的测试用例添加到defaultRuleProvider()
中,否则添加到customRulesProvider()
中。
提交PR。非常感谢。💚
行为准则
为了促进一个开放和欢迎的环境,我们作为贡献者和维护者承诺,无论年龄、体型、残疾、种族、性别身份和表达、经验水平、国籍、个人外貌、种族、宗教或性身份和取向,为每个人提供一个没有骚扰的项目和社区参与体验。
完整的行为准则可以在这里找到。
这个项目不是仇恨的地方。如果您有任何问题,请联系Florian:[email protected] ✌🏻🏳️🌈
更多信息
集成
Symfony
Slugify包含一个Symfony包和服务定义,允许您将其作为服务在您的Symfony应用程序中使用。代码位于Cocur\Slugify\Bridge\Symfony\CocurSlugifyBundle
中,您只需要激活它
Symfony 2
在Slugify 4.0.0中已弃用对Symfony 2的支持,请使用cocur/slugify@3
。
Symfony 3
// app/AppKernel.php class AppKernel extends Kernel { public function registerBundles() { $bundles = [ // ... new Cocur\Slugify\Bridge\Symfony\CocurSlugifyBundle(), ]; } }
Symfony >= 4
// config/bundles.php return [ // ... Cocur\Slugify\Bridge\Symfony\CocurSlugifyBundle::class => ["all" => true], ];
您现在可以在应用程序的任何地方使用cocur_slugify
服务,例如,在控制器中
$slug = $this->get("cocur_slugify")->slugify("Hello World!");
该包还提供了一个别名slugify
,用于cocur_slugify
服务
$slug = $this->get("slugify")->slugify("Hello World!");
如果您使用autowire
(Symfony >=3.3),您可以像这样将其注入到您的服务中
public function __construct(\Cocur\Slugify\SlugifyInterface $slugify)
Symfony配置
您可以在 config.yml
(Symfony 2-3)或 config/packages/cocur_slugify.yaml
(Symfony 4)中设置以下配置设置来调整slugify服务
cocur_slugify: lowercase: false # or true separator: "-" # any string # regexp: <string> rulesets: ["austrian"] # List of rulesets: https://github.com/cocur/slugify/tree/master/Resources/rules
Twig
如果您使用Symfony框架与Twig,您可以在设置好Symfony集成(见上文)后,在您的模板中使用Twig过滤器 slugify
。
{{ 'Hällo Wörld'|slugify }}
如果您在Symfony框架之外使用Twig,您首先需要将扩展添加到您的环境中
use Cocur\Slugify\Bridge\Twig\SlugifyExtension; use Cocur\Slugify\Slugify; $twig = new Twig_Environment($loader); $twig->addExtension(new SlugifyExtension(Slugify::create()));
要使用针对Laravel的 TwigBridge 的Twig过滤器,您需要使用闭包添加Slugify扩展
// laravel/app/config/packages/rcrowe/twigbridge/config.php 'extensions' => array( //... function () { return new \Cocur\Slugify\Bridge\Twig\SlugifyExtension(\Cocur\Slugify\Slugify::create()); }, ),
有关注册扩展的更多信息,请参阅 Twig文档。
Mustache.php
在 Mustache.php 中使用Slugify不需要额外的集成。如果您想在Mustache中使用Slugify,只需添加一个助手即可
use Cocur\Slugify\Slugify; $mustache = new Mustache_Engine([ // ... "helpers" => [ "slugify" => function ($string, $separator = null) { return Slugify::create()->slugify($string, $separator); }, ], ]);
Laravel
Slugify还提供了一个服务提供商,可集成到Laravel(4.1版本及以后)中。
在您的Laravel项目的 app/config/app.php
文件中,将服务提供商添加到“providers”数组中
'providers' => array( "Cocur\Slugify\Bridge\Laravel\SlugifyServiceProvider", )
并将外观添加到“aliases”数组中
'aliases' => array( "Slugify" => "Cocur\Slugify\Bridge\Laravel\SlugifyFacade", )
然后您可以在您的控制器中使用 Slugify::slugify()
方法
$url = Slugify::slugify("welcome to the homepage");
Zend Framework 2
Slugify可以轻松地在Zend Framework 2应用程序中使用。包括的桥接器已经为您注册了服务和视图助手。
只需像这样在您的配置中启用模块。
return [ //... "modules" => [ "Application", "ZfcBase", "Cocur\Slugify\Bridge\ZF2", // <- Add this line //... ], //... ];
之后,您可以检索 Cocur\Slugify\Slugify
服务(或 slugify
别名)并生成一个slug。
/** @var \Zend\ServiceManager\ServiceManager $sm */ $slugify = $sm->get("Cocur\Slugify\Slugify"); $slug = $slugify->slugify("Hällo Wörld"); $anotherSlug = $slugify->slugify("Hällo Wörld", "_");
在您的视图模板中,使用 slugify
助手来生成slugs。
<?php echo $this->slugify("Hällo Wörld"); ?> <?php echo $this->slugify("Hällo Wörld", "_"); ?>
可以通过定义此配置键来自定义(也是视图助手使用的)服务。
return [ "cocur_slugify" => [ "reg_exp" => "/([^a-zA-Z0-9]|-)+/", ], ];
Nette Framework
Slugify包含一个Nette扩展,允许您将其作为服务在您的Nette应用程序中使用。您只需在您的 config.neon
中注册它
# app/config/config.neon extensions: slugify: Cocur\Slugify\Bridge\Nette\SlugifyExtension
现在您可以在应用程序的任何地方使用 Cocur\Slugify\SlugifyInterface
服务,例如在您的presenter中
class MyPresenter extends \Nette\Application\UI\Presenter { /** @var \Cocur\Slugify\SlugifyInterface @inject */ public $slugify; public function renderDefault() { $this->template->hello = $this->slugify->slugify("Hällo Wörld"); } }
Latte
如果您使用Nette框架及其本地的Latte模板引擎,您可以在设置Nette扩展(见上文)后在您的模板中使用Latte过滤器 slugify
。
{$hello|slugify}
如果您在Nette框架之外使用Latte,您首先需要将过滤器添加到您的引擎中
use Cocur\Slugify\Bridge\Latte\SlugifyHelper; use Cocur\Slugify\Slugify; use Latte; $latte = new Latte\Engine(); $latte->addFilter("slugify", [new SlugifyHelper(Slugify::create()), "slugify"]);
Slim 3
Slugify不需要特定的桥接器即可与 Slim 3 一起工作,只需添加以下配置
$container["view"] = function ($c) { $settings = $c->get("settings"); $view = new \Slim\Views\Twig( $settings["view"]["template_path"], $settings["view"]["twig"] ); $view->addExtension( new Slim\Views\TwigExtension( $c->get("router"), $c->get("request")->getUri() ) ); $view->addExtension( new Cocur\Slugify\Bridge\Twig\SlugifyExtension( Cocur\Slugify\Slugify::create() ) ); return $view; };
在模板中,您可以像这样使用它
<a href="/blog/{{ post.title|slugify }}">{{ post.title|raw }}</a></h5>
League
Slugify为使用 league/container
提供了一个服务提供商
use Cocur\Slugify; use League\Container; /* @var Container\ContainerInterface $container */ $container->addServiceProvider( new Slugify\Bridge\League\SlugifyServiceProvider() ); /* @var Slugify\Slugify $slugify */ $slugify = $container->get(Slugify\SlugifyInterface::class);
您可以通过共享所需选项来配置它
use Cocur\Slugify; use League\Container; /* @var Container\ContainerInterface $container */ $container->share("config.slugify.options", [ "lowercase" => false, "rulesets" => ["default", "german"], ]); $container->addServiceProvider( new Slugify\Bridge\League\SlugifyServiceProvider() ); /* @var Slugify\Slugify $slugify */ $slugify = $container->get(Slugify\SlugifyInterface::class);
您可以通过共享来配置要使用的规则提供者
use Cocur\Slugify; use League\Container; /* @var Container\ContainerInterface $container */ $container->share(Slugify\RuleProvider\RuleProviderInterface::class, function () { return new Slugify\RuleProvider\FileRuleProvider(__DIR__ . '/../../rules'); ]); $container->addServiceProvider(new Slugify\Bridge\League\SlugifyServiceProvider()); /* @var Slugify\Slugify $slugify */ $slugify = $container->get(Slugify\SlugifyInterface::class);
变更日志
版本 4.6.0(2024年9月10日)
- #336 添加Yiddish语言规则集(由 yankl 提供)
- #340 修复了针对Symfony 7.1的修复(由 Evgeny1973 提供)
- #342 修复了PHP 8.4关于隐式null参数的弃用问题(由 shyim 提供)
版本 4.5.1(2023年9月16日)
- 停止对PHP 7的支持并修复版本约束
- 替换v4.5.0
版本 4.5(2023年9月16日)
- #327 将韩语添加到默认规则集
- 自本版本开始,由于与PHP 7不兼容,已被v4.5.1替代
版本 4.4.1(2023年9月17日)
- 从兼容性列表中删除PHP 7
- 替代v4.4.0
版本 4.4(2023年8月5日)
- #320 添加韩语(由 MrMooky 提供)
- #322 添加类型以避免PHP 8.2弃用警告(由 antoniovj1 提供)
- 自本版本开始,由于与PHP 7不兼容,已被v4.4.1替代
版本 4.3(2022年12月7日)
版本 4.2(2022年8月13日)
- #305 添加对自定义字体的支持(由 luca-alsina 提供)
- #309 添加处理未定义规则集的方法(由 aadmathijssen 提供)
- #227 添加对大写尖锐s的支持(由 weeman1337 提供)
- #312 修复composer.lock文件(由 florianeckerstorfer 提供)
- #313 更新PHP版本要求(由 florianeckerstorfer 提供)
版本 4.1(2022年1月11日)
支持Symfony 6。
- #244 .gitignore清理(由 kubawerlos 提供)
- #259 修复葡萄牙语(巴西)语言(由 stephandesouza 提供)
- #272 改进断言测试(由 peter279k 提供)
- #278 更新georgian.json(由 nikameto 提供)
- #299 允许使用Symfony 6并解决弃用问题(由 GromNaN 提供)
- #264 添加新加尔各答语(由 infynnoTech 提供)
- #297 扩展约鲁巴字符支持(由 9jaGuy 提供)
版本 4.0(2019年12月14日)
版本4没有引入新的主要功能,但增加了对Symfony 4和5、Twig 3的支持,最重要的是,增加了对PHP 7.3和7.4的支持。
停止支持PHP 5、Twig 1和Silex。
- #230 添加斯洛伐克语规则(由 bartko-s 提供)
- #236 使Twig Bridge与Twig 3.0兼容(由 mhujer 提供)
- #237 修复Travis CI配置(由kubawerlos提供)
- #238 移除对Twig 1的支持(由FabienPapet提供)
- #239 修复AppVeyor(由kubawerlos提供)
- #241 更新.gitattributes(由kubawerlos提供)
- #242 添加PHP CS Fixer(由kubawerlos提供)
- #243 规范composer.json(由kubawerlos提供)
- #246 添加对PHP 7.3和7.4的支持(由snapshotpl提供)
- #247 AppVeyor改进(由kubawerlos提供)
- #249 PHPUnit注释应为包括根命名空间的FQCNs(由kubawerlos提供)
- #250 添加对Symfony 4和5的支持(由franmomu提供)
- #251 停止对PHP 5的支持(由franmomu提供)
- #253 添加对未维护的Symfony版本的冲突(由franmomu提供)
版本3.2(2019年1月31日)
- #201 添加strip_tags选项(由thewilkybarkid提供)
- #212 修复马其顿Dze(由franmomu提供)
- #213 添加对土库曼语的支持(由umbarov提供)
- #216 添加lowercase_after_regexp选项(由julienfalque提供)
- #217 简化默认正则表达式印象(由julienfalque提供)
- #220 修复symfony/config 4.2+的弃用警告(由franmomu提供)
- #221 添加对亚美尼亚语的支持(由boolfalse提供)
版本3.1(2018年1月22日)
版本3.0.1(2017年9月24日)
- #183 修复无效的JSON (RusiPapazov)
- #185 修复对Symfony > 3.3的支持(由 FabienPapet 提供)
- #186 在
composer.json
中要求多字节扩展(由 wandersonwhcr 提供)
版本 3.0(2017年8月11日)
- HHVM不再受支持
- 错误修复 #165 将缺失的法国规则添加到
DefaultRuleProvider
(由 gsouf 提供) - #168 添加波斯语规则(由 mohammad6006 提供)
- 错误修复 #169 将缺失的
getName()
添加到Cocur\Slugify\Bridge\Twig\SlugifyExtension
(由 TomCan 提供) - #172 在
DefaultRuleProvider
中对规则进行字母排序(由 tbmatuka 提供) - #174 添加匈牙利语规则(由 rviktor87 提供)
- #180 添加巴西葡萄牙语规则(由 tallesairan 提供)
- 错误修复 #181 添加缺失的法国规则(由 FabienPapet 提供)
版本 2.5(2017年3月23日)
- #150 添加罗马尼亚语规则(由 gabiudrescu 提供)
- #154 添加法语规则(由 SuN-80 提供)
- #159 添加爱沙尼亚语规则(由 erkimiilberg 提供)
- #162 添加对Twig 2的支持(由 JakeFr 提供)
版本 2.4(2017年2月9日)
- #133 允许修改选项而不创建新对象(由 leofeyer 提供)
- #135 添加对丹麦语的支持(由 izehose 提供)
- #140 更新印地语支持(由 arunlodhi 提供)
- #146 添加对意大利语的支持(由 gianiaz 提供)
- #151 添加对塞尔维亚语的支持(由 cvetan 提供)
- #155 更新立陶宛语支持(由 s4uliu5 提供)
版本 2.3(2016年8月9日)
- #124 修复对保加利亚语的支持
- #125 更新 Silex 2 提供者(由 JakeFr 提供)
- #129 添加克罗地亚语支持(由 napravicukod 提供)
版本 2.2(2016 年 7 月 10 日)
- #102 添加阿塞拜疆语的转写(由 seferov 提供)
- #109 将整数值转换为字符串(由 JonathanMH 提供)
- #114 为 league/container 提供 SlugifyServiceProvider(由 localheinz 提供)
- #120 添加与 Silex 2 的兼容性(由 shamotj 提供)
版本 2.1.1(2016 年 4 月 8 日)
- 默认不激活瑞典规则(修复了 v2.1 版本的错误发布)
版本 2.1.0(2016 年 4 月 8 日)
版本 2.0.0(2016 年 2 月 24 日)
- #78 使用多字节安全的大小写约定(由 Koc 提供)
- #81 将规则移动到 JSON 文件中(由 florianeckerstorfer 提供)
- #84 添加包含变音符号的长字符串的测试(由 florianeckerstorfer 提供)
- #88 添加印地语的规则(由 florianeckerstorfer 提供)
- #89 添加挪威语的规则(由 tsmes 提供)
- #90 在 Laravel 中将
bindShared
替换为singleton
(由 sunspikes 提供) - #97 将最低 PHP 版本设置为 5.5.9(由 florianeckerstorfer 提供)
- #98 添加保加利亚语的规则(由 RoumenDamianoff 提供)
版本 1.4.1(2016 年 2 月 11 日)
版本 1.4(2015 年 9 月 29 日)
版本 1.3(2015 年 9 月 2 日)
- #70 添加缺失的上标和下标数字(由 BlueM 提供)
- #71 改进希腊语支持(由 kostaspt 提供)
- #72 改进 Silex 集成(由 CarsonF 提供)
- #73 改进俄语支持(由 akost 提供)
版本 1.2(2015 年 7 月 2 日)
- 添加对 Plum 的集成(由 florianeckerstorfer 提供)
- #64 修复 Nette 集成(由 lookyman 提供)
- 添加选项以不将 slug 转换为小写(由 florianeckerstorfer 和 GDmac 提供)
版本 1.1(2015 年 3 月 18 日)
- #54 添加对缅甸字符的支持(由 lovetostrike 提供)
- #58 添加 Nette 和 Latte 集成(由 lookyman 提供)
- #50 修复越南字符 Đ 的转写(由 mac2000 提供)
版本 1.0(2014 年 11 月 26 日)
没有新功能或错误修复,但现在是时候将 Slugify 提升至 v1.0 版本了。
版本 0.11(2014 年 11 月 23 日)
版本 0.10.3(2014 年 11 月 8 日)
版本 0.10.2(2014 年 10 月 18 日)
- #44 将属性的可见性更改为
protected
(由 acelaya 提供) - #45 配置用于替换字符的正则表达式(由 acelaya 提供)
- 修复类型提示(由 florianeckerstorfer 提供)
- 移除重复的规则(由 florianeckerstorfer 提供)
版本 0.10.1(2014 年 9 月 1 日)
- #39 添加对规则集的支持(由 florianeckerstorfer 提供)
版本 0.10.0(2014 年 8 月 26 日)
- #32 添加 Laravel 桥接器(由 cviebrock 提供)
- #35 修复了
Ď
的转写(由 michalskop 提供)
版本 0.9(2014 年 5 月 29 日)
- #28 添加了 Symfony2 服务别名,并将 Twig 扩展设置为私有(由 Kevin Bond 提供)
版本 0.8(2014 年 4 月 18 日)
- #27 添加了对阿拉伯字符的支持(由 Davide Bellini 提供)
- 添加了一些缺失的字符
- 改进了
Slugify
类中字符的组织
版本 0.7(2014 年 4 月 4 日)
本版本引入了到 Symfony2、Silex 和 Twig 的可选集成。您仍然可以在任何其他框架中使用该库。我决定包括这些桥梁,因为存在来自其他开发者的集成,但他们使用的是 cocur/slugify 的过时版本。将这些小型桥梁类包含在库中使维护它们对我来说更容易。
版本 0.6(2014 年 4 月 2 日)
- #22 添加了对世界语字符的支持(由 Michel Petit 提供)
版本 0.5(2014 年 3 月 28 日)
- #21 添加了对希腊字符的支持(由 Michel Petit 提供)
- #20 修复了西里尔字母 D 的规则(由 Marchenko Alexandr 提供)
- 向
SlugifyInterface
添加了缺失的$separator
参数
版本 0.4.1(2014 年 3 月 9 日)
- #19 添加了软符号规则(由 Marchenko Alexandr 提供)
版本 0.4(2014 年 1 月 17 日)
几乎完全重写了代码,移除了对 iconv
的支持,因为底层库已损坏。现在的代码更好更快。感谢 Marchenko Alexandr。
版本 0.3(2014 年 1 月 12 日)
- #11 PSR-4 兼容(由 mac2000 提供)
- #13 添加了 editorconfig(由 mac2000 提供)
- #14 当输入为空时返回空 slug,并删除了未使用的参数(由 mac2000 提供)
作者
中文支持已从 jifei/Pinyin 获得许可并进行了适配。
支持
如果您需要支持,您可以在 Twitter 上提问(嗯,只有当您的问题很短时)或者您可以在 Gitter 上加入我们的聊天。
如果您想支持Slugify的发展,可以通过提供额外的转写或告知我们某个转写是否错误来帮助我们。如果您能直接在GitHub上向我们发送Pull Request,我们将非常感激。如果您从未在GitHub上为项目做出过贡献,我们也愿意提供帮助。只需在Twitter上询问或直接加入我们的Gitter即可。
您总是可以通过给我发一些欧元来帮助我(Florian,原始开发者和维护者)。
许可
MIT许可(MIT)
版权所有(c)2012-2017 Florian Eckerstorfer
特此授予任何人免费获得本软件及其相关文档文件(以下简称“软件”)副本的许可,以不受限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权力,并允许向软件提供者提供软件的人行使其权利,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何形式的质量保证,无论是明示的、暗示的还是法定的,包括但不限于适销性、特定目的的适用性和非侵权性。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论该索赔、损害或其他责任是基于合同、侵权或其他法律行为,以及与软件或其使用或其他交易有关。