1

テキストをスラッグ化する関数がありますが、「:」を「/」に置き換える必要があることを除けば、うまく機能します。現在、すべての非文字または数字を「-」に置き換えています。ここにあります :

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

        // trim
        $text = trim($text, '-');

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

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

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

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

        return $text;
    }
4

1 に答える 1

-1

いくつか変更を加えました。配列の検索/置換セットを提供して、ほとんどすべてをに置き換えますが、-に置き換えます::/

$search = array( '~[^\\pL\d:]+~u', '~:~' );
$replace = array( '-', '/' );
$text = preg_replace( $search, $replace, $text);

そして後で、この最後は私たちを空の文字列preg_replaceに置き換えていました。/そのため、キャラクタークラスでスラッシュを許可しました。

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

これは以下を出力します:

// antiques/antiquities
echo slugify( "Antiques:Antiquities" );
于 2012-05-14T03:00:11.943 に答える