1. ホーム
  2. php

[解決済み] スラッグ(URL文字列)を作成するPHP関数

2022-04-18 02:16:48

質問

Unicodeの文字列からスラッグを作成する関数が欲しいのですが、例えば gen_slug('Andrés Cortez') を返さなければなりません。 andres-cortez . どうすればいいのでしょうか?

どのように解決するのですか?

長い置き換えの代わりに、この方法を試してみてください。

public static function slugify($text, string $divider = '-')
{
  // replace non letter or digits by divider
  $text = preg_replace('~[^\pL\d]+~u', $divider, $text);

  // transliterate
  $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);

  // remove unwanted characters
  $text = preg_replace('~[^-\w]+~', '', $text);

  // trim
  $text = trim($text, $divider);

  // remove duplicate divider
  $text = preg_replace('~-+~', $divider, $text);

  // lowercase
  $text = strtolower($text);

  if (empty($text)) {
    return 'n-a';
  }

  return $text;
}

これは symfony の Jobeet チュートリアルにあるものを元にしています。