2010-10-05 86 views
0

我只使用slu to识别网站上的一个页面,如:example.tld/view/this-fancy-slug。这是从标题自动与此函数生成:独特的slu that,如果适合slug-1,slug-2 ... slug-n

public static function Normalize($str) 
{ 
    $charset = "UTF-8"; 
    $separator = "-"; 

    $str = strtolower(htmlentities($str, ENT_COMPAT, $charset)); 
    $str = preg_replace('/&(.)(acute|cedil|circ|lig|grave|ring|tilde|uml);/', "$1", $str); 
    $str = preg_replace('/([^a-z0-9]+)/', $separator, html_entity_decode($str, ENT_COMPAT, $charset)); 
    $str = trim($str, $separator); 

    return $str; 
} 

这将返回一个完美的蛞蝓......但我需要独特的蛞蝓。所以我必须结合mysql来检查是否存在一个适合创建的slug。没有问题。

问题是我想在最后添加一个-1,如果有一个slug。但可以越野车,如果加3个等于蛞蝓所以...我如何管理这个从,去鼻涕虫1塞-2鼻涕虫3 ... 塞-100,slug-n

预先感谢您!

回答

1

不要只检查是否存在相同的slu slu。使用正则表达式来计算所有遵循/(<base-regex-for-slug>)(-\d+)?/模式的slu count。因为你只允许字母数字你上面的基本正则表达式本身就是slu re。

+0

这个函数只给了我标题为slu g。在另一部分中,MySQL查询,我必须检查它。我不知道如何管理:检查slug是否返回true,如果返回,请检查最后一个数字是什么(NULL,-1,-2 ...)。 – ipalaus 2010-10-05 10:22:11

+1

这正是我回答的问题。使函数返回使用slu number的次数。要做到这一点,你不要检查SQL(LIKE或=)中的完全匹配,但检查正则表达式模式(RLIKE)。 http://dev.mysql.com/doc/refman/5.1/en/regexp.html#operator_regexp – 2010-10-05 10:40:21

+0

我不知道RLIKE!谢谢! :) – ipalaus 2010-10-05 13:02:30