【问题标题】:How can I create slugify in symfony2?如何在 symfony2 中创建 slugify?
【发布时间】:2013-06-19 21:14:45
【问题描述】:

我已经开始使用 symfony2 并且发现了一些 symfony 1.4 中存在的功能,例如 slugify。我需要这个来改善褶皱。

【问题讨论】:

    标签: php symfony slug


    【解决方案1】:

    使用 l3ppard 的 sluggable extension ( GitHub repository) ...

    ... 或 KnpLabs sluggable behavior ( GitHub repository )。

    【讨论】:

    • 非常感谢 nifr。我会试试的。我也看到了stof。你认为女巫是最好的选择
    • StofDoctrineExtensions 在 symfony2 中提供了更简单的集成(注册服务、设置监听器),但不是扩展本身。
    • 游戏晚了,但对于大多数用例来说,非独特的 slug 几乎没用。
    • 我找到了这个库 - github.com/cocur/slugify。效果很好。
    【解决方案2】:

    我使用 util.php 进行 slugify。虽然它不需要 Symfony,但可以很好地使用它。

    util::slugify('This is a random --string with an Ãccent');
    => Returns 'this-is-a-random-string-with-an-accent'
    

    【讨论】:

      【解决方案3】:

      如果你有 php-intl :

      /**
       * Transform (e.g. "Hello World") into a slug (e.g. "hello-world").
       *
       * @param string $string
       *
       * @return string
       */
      public function slugify($string)
      {
          $rule = 'NFD; [:Nonspacing Mark:] Remove; NFC';
          $transliterator = \Transliterator::create($rule);
          $string = $transliterator->transliterate($string);
      
          return preg_replace(
              '/[^a-z0-9]/',
              '-',
              strtolower(trim(strip_tags($string)))
          );
      }
      

      要不然看看the doctrine extensions

      【讨论】:

      • 这个答案非常简单,只要启用了 Transliterator,它似乎就可以很好地工作。谢谢。
      • 没有足够多的人知道将非 ascii 输入(如带有重音符号的法语或应该转换为 ae 等的 æ)转换为 ascii 是一个由 unicode 以标准方式长期解决的问题跨度>
      • Doctrine 扩展使用Behat Transliterator
      猜你喜欢
      • 2013-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-24
      • 2017-10-19
      • 1970-01-01
      相关资源
      最近更新 更多