Телефон XTetis +38 (097) 755-20-01   skype.png, 73kB xtetis   skype.png, 73kB Обратная связь skype.png, 73kB Сделать заказ  
 
 
Категории блога

Функция транслитерации контента

 Иногда приходится генерировать ЧПУ. Если движки позволяют эти ЧПУ хранить в базе - тут нам пригодится скрипт для транслитерации строковых данных.

Вот сама функция

 

DELIMITER $$

DROP FUNCTION IF EXISTS `_fs_transliterate_2` $$
CREATE FUNCTION `_fs_transliterate_2`( str TEXT) RETURNS text CHARSET cp1251
DETERMINISTIC
SQL SECURITY INVOKER
BEGIN
declare str2 varchar(2);
declare str3 text;
declare len int(11);
declare i int(11);
set str3 = '';
set i = 1;
set len = length(str);
/*идем циклом по символам строки*/
while i <= len do /*выполняем преобразование припомощи ф-ии ELT */
set str2 = elt(
instr(
' ,./АаАБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуфХхцЦЧчШшЩщЪъыЫЬьЭэЮюЯя[\]_{}',
substr(str,i,1)
),
'-',
'',
'',
'',
'A',
'a',
'A',
'B',
'b',
'V',
'v',
'G',
'g',
'D',
'd',
'E',
'e',
'JO',
'jo',
'ZH',
'zh',
'Z',
'z',
'I',
'i',
'J',
'j',
'K',
'k',
'L',
'l',
'M',
'm',
'N',
'n',
'O',
'o',
'P',
'p',
'R',
'r',
'S',
's',
'T',
't',
'U',
'u',
'f',
'H',
'h',
'c',
'C',
'CH',
'ch',
'SH',
'sh',
'SH',
'sh',
'\'',
'-',
'y',
'Y',
'-',
'\'',
'E-',
'e-',
'YU',
'yu',
'YA',
'ya',
'',
'',
'',
'-',
'',
''
);
if str2 is null then /* если преобразование не прошло успешно добавляем в рез-т исходный символ */
set str2 = substr(str,i,1);
end if;
set str3 = concat(str3,str2);
set i = i + 1;
end while;

set str3 = REPLACE(str3,'--','-');
set str3 = REPLACE(str3,'--','-');
set str3 = REPLACE(str3,'--','-');
set str3 = REPLACE(str3,'--','-');
set str3 = REPLACE(str3,')','');
set str3 = REPLACE(str3,'(','');

set str3 = LEFT(str3,LENGTH(str3)-1);


return lower(str3);



END $$

DELIMITER ;

А это вызов функции

UPDATE `marochnik_content` SET `url`=_fs_transliterate_2(`title`)