如何在slugify函数中用“/”替换“:”?

时间:2012-05-14 02:55:32

标签: php regex

我有一个函数可以对文本进行细化,除了我需要用“/”替换“:”之外,它运行良好。目前,它用“ - ”替换所有非字母或数字。这是:

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;
    }

1 个答案:

答案 0 :(得分:-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" );