php – mySQL存储功能来创建一个slug
发布时间:2020-05-25 09:44:39 所属栏目:PHP 来源:互联网
导读:有没有一个 mysql存储的功能,从一个url(或任何值真的)创建一个slug. 所以我的查询可以是: SELECT *, SLUG(url) FROM clients 这是上述功能的更新版本.它更快,因为它避免循环所有允许的字符,只是通过比较ASCII代码进行检查. DROP FUNCTION IF EXISTS `slugify
|
有没有一个 mysql存储的功能,从一个url(或任何值真的)创建一个slug. 所以我的查询可以是: SELECT *,SLUG(url) FROM clients这是上述功能的更新版本.它更快,因为它避免循环所有允许的字符,只是通过比较ASCII代码进行检查. DROP FUNCTION IF EXISTS `slugify`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost`
FUNCTION `slugify`(dirty_string varchar(200))
RETURNS varchar(200) CHARSET latin1
DETERMINISTIC
BEGIN
DECLARE x,y,z Int;
Declare temp_string,new_string VarChar(200);
Declare is_allowed Bool;
Declare c,check_char VarChar(1);
set temp_string = LOWER(dirty_string);
Set temp_string = replace(temp_string,'&',' and ');
Select temp_string Regexp('[^a-z0-9-]+') into x;
If x = 1 then
set z = 1;
While z <= Char_length(temp_string) Do
Set c = Substring(temp_string,z,1);
Set is_allowed = False;
If !((ascii(c) = 45) or (ascii(c) >= 48 and ascii(c) <= 57) or (ascii(c) >= 97 and ascii(c) <= 122)) Then
Set temp_string = Replace(temp_string,c,'-');
End If;
set z = z + 1;
End While;
End If;
Select temp_string Regexp("^-|-$|'") into x;
If x = 1 Then
Set temp_string = Replace(temp_string,"'",'');
Set z = Char_length(temp_string);
Set y = Char_length(temp_string);
Dash_check: While z > 1 Do
If Strcmp(SubString(temp_string,-1,1),'-') = 0 Then
Set temp_string = Substring(temp_string,1,y-1);
Set y = y - 1;
Else
Leave Dash_check;
End If;
Set z = z - 1;
End While;
End If;
Repeat
Select temp_string Regexp("--") into x;
If x = 1 Then
Set temp_string = Replace(temp_string,"--","-");
End If;
Until x <> 1 End Repeat;
If LOCATE('-',temp_string) = 1 Then
Set temp_string = SUBSTRING(temp_string,2);
End If;
Return temp_string;
END;;
DELIMITER ; (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
