Помогите с кодировками в пхп

J
На сайте с 08.06.2006
Offline
844
484

Есть код

function rus_to_lat($string)
{
$abc = array(
"Є"=>"ye","І"=>"i","Ѓ"=>"g","і"=>"i","№"=>"#","є"=>"ye","ѓ"=>"g",
"А"=>"a","Б"=>"b","В"=>"v","Г"=>"g","Д"=>"d",
"Е"=>"e","Ё"=>"yo","Ж"=>"zh",
"З"=>"z","И"=>"i","Й"=>"j","К"=>"k","Л"=>"l",
"М"=>"m","Н"=>"n","О"=>"o","П"=>"p","Р"=>"r",
"С"=>"s","Т"=>"t","У"=>"u","Ф"=>"f","Х"=>"x",
"Ц"=>"c","Ч"=>"ch","Ш"=>"sh","Щ"=>"shh","Ъ"=>"",
"Ы"=>"y","Ь"=>"","Э"=>"e","Ю"=>"yu","Я"=>"ya",
"а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d",
"е"=>"e","ё"=>"yo","ж"=>"zh",
"з"=>"z","и"=>"i","й"=>"j","к"=>"k","л"=>"l",
"м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
"с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"x",
"ц"=>"c","ч"=>"ch","ш"=>"sh","щ"=>"shh","ъ"=>"",
"ы"=>"y","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya",
"—"=>"-","«"=>"","»"=>"","…"=>""," "=>"-","-"=>"-",
"1"=>"1","2"=>"2","3"=>"3","4"=>"4","5"=>"5",
"6"=>"6","7"=>"7","8"=>"8","9"=>"9","0"=>"0"
);
for ($i=0;$i<strlen($string);$i++)
$url.= $abc[$string[$i]];
return $url;
}

на локалхосте

ru_to_lat('Привет мир'); дает "Privet mir"

а когда использую эту функцию в плагине ВП, то под любой аргумент результат "---"

Вроде как в кодировке проблема

Но попробовал iconv('windows-1251', 'UTF-8', не помогло

Что же не так?

mff
На сайте с 21.02.2008
Offline
282
mff
#1

Киньте на хостинг свой скрипт, работает? Если да, то возможно сами файлы wp имеют другую кодировку.

Управление репутацией в сети: https://timbook2.ru/
siv1987
На сайте с 02.04.2009
Offline
427
#2
joost:
в плагине ВП

ВП насколько мне известно работает на utf-8, а значит этот код нужно сохранить как utf-8

joost:
Но попробовал iconv('windows-1251', 'UTF-8', не помогло

iconv чего?

serjoo
На сайте с 12.09.2011
Offline
389
#3

В нотпаде сохранить без BOM, не?

Мультур..
дани мапов
На сайте с 06.09.2012
Offline
204
#4

Попробуй strlen поменять на mb_strlen.

Написание и доработка скриптов (PHP, MySQL, JavaScript, jQuery) (/ru/forum/811046)
J
На сайте с 08.06.2006
Offline
844
#5
siv1987:
iconv чего?

$string перед отправкой параметром функции

serjoo:
В нотпаде сохранить без BOM, не?

попробую

---------- Добавлено 10.04.2014 в 09:56 ----------

дани мапов:
Попробуй strlen поменять на mb_strlen.

не помогло

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#6

Функция для UTF-8

function translit($st)

{

$st = mb_strtolower($st, "utf-8");

$st = str_replace(array(

'?','!','.',',',':',';','*','(',')','{','}','[',']','%','#','№','@','$','^','-','+','/','\\','=','|','"','\'',

'а','б','в','г','д','е','ё','з','и','й','к',

'л','м','н','о','п','р','с','т','у','ф','х',

'ъ','ы','э',' ','ж','ц','ч','ш','щ','ь','ю','я'

), array(

'-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-',

'a','b','v','g','d','e','e','z','i','y','k',

'l','m','n','o','p','r','s','t','u','f','h',

'j','i','e','-','zh','ts','ch','sh','shch',

'','yu','ya'

), $st);

$st = preg_replace("/[^a-z0-9_-]/", "", $st);

$st = trim($st, '-');

$st = preg_replace("/-{2,}/", "-", $st);

return $st;

}

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
J
На сайте с 08.06.2006
Offline
844
#7
serjoo:
В нотпаде сохранить без BOM, не?

не помогло

---------- Добавлено 10.04.2014 в 10:03 ----------

спасибо!

работает!

LEOnidUKG:
function translit($st)
{
$st = mb_strtolower($st, "utf-8");
$st = str_replace(array(
'?','!','.',',',':',';','*','(',')','{','}','[',']','%','#','№','@','$','^','-','+','/','\\','=','|','"','\'',
'а','б','в','г','д','е','ё','з','и','й','к',
'л','м','н','о','п','р','с','т','у','ф','х',
'ъ','ы','э',' ','ж','ц','ч','ш','щ','ь','ю','я'
), array(
'-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-',
'a','b','v','g','d','e','e','z','i','y','k',
'l','m','n','o','p','r','s','t','u','f','h',
'j','i','e','-','zh','ts','ch','sh','shch',
'','yu','ya'
), $st);
$st = preg_replace("/[^a-z0-9_-]/", "", $st);
$st = trim($st, '-');
$st = preg_replace("/-{2,}/", "-", $st);
return $st;
}

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий