2013-10-25 5 views
2

Я хочу, чтобы заменить все турецкое письмо в предложении с английским письмом, я пробую следующую функцию:Заменить турецкие буквы с английскими буквами

$title_result = "Türkiye'nin en iyi oranlari ile Lider Bahis Sitesi"; 
$turkish = array("ı", "ğ", "ü", "ş", "ö", "ç");//turkish letters 
$english = array("i", "g", "u", "s", "o", "c");//english cooridinators letters 

$final_title = str_replace($turkish, $english, $title_result);//replace php function 
print_r($turkish);//when printing this i got: Array ([0] => ı [1] => ğ [2] => ü [3] => ş [4] => ö [5] => ç) 
return $final_title; 

я думаю, что проблема в турецких символах, но я не знаю, как я могу заставить php правильно прочитать эти символы, чтобы правильно заменить. Мне нужны ваши предложения, пожалуйста?

+0

Ваш код хорошо работает на моей машине. Возможно, что-то не так с вашей конфигурацией - проверьте для mbstring: http: // php. net/manual/en/book.mbstring.php – k102

+0

окончательное название не отображается или не печатается, потому что str_replace не работает, поэтому он не имеет значения – Basel

+0

см. информацию о php для mbstring, пожалуйста ('php -i | grep mbstring' в терминале linux). это shoulb быть включенным, потому что я думаю, что турецкие символы могут храниться в двух байтах вместо одного – k102

ответ

3

Вы заметили, что печатаете $turkish, а не замененную строку (т. Е. $final_title)? Вы видите массив, потому что вы печатаете массив. Если вы печатаете массив только в своем браузере, вы видите эти перепутанные символы, вероятно, потому, что вывод не кодируется UTF-8. Однако если вы это сделаете (обратите внимание на метатег):

<meta charset="utf-8" /> 
<?php 
$title_result = "Türkiye'nin en iyi oranlari ile Lider Bahis Sitesi"; 
$turkish = array("ı", "ğ", "ü", "ş", "ö", "ç");//turkish letters 
$english = array("i", "g", "u", "s", "o", "c");//english cooridinators letters 

$final_title = str_replace($turkish, $english, $title_result);//replace php function 
print_r($turkish); 

Вы увидите персонажей правильно. Но дело не в этом. Функция str_replace() отлично работает. Он должен работать нормально.

+0

Я использую latin-1 как acharset в своем заголовочном файле, потому что utf8 не может распечатать турецкие символы в моем браузере. Моя проблема в том, что str_replace не выполняет замену, старая строка и новая строка одинаковы. – Basel

+0

Но в '$ title_result' нет никаких турецких символов! Поэтому 'str_replace' не имеет ничего общего с этой строкой. – k102

+0

Какова кодировка символа файла, где находится этот код? Попробуйте изменить его на UTF-8 без спецификации или UTF-8. Это работает? (будьте осторожны, потому что это может испортить ваш файл, сделать резервную копию перед чем-либо. Я делаю Ctrl + A, Ctrl + X, меняю кодировку, Ctrl + V на Notepad ++). Кодирование - это трюк, который я не освоил. – Parziphal

2

насчет великого письма, Моего решения:

function url_make($str){ 
    $before = array('ı', 'ğ', 'ü', 'ş', 'ö', 'ç', 'İ', 'Ğ', 'Ü', 'Ö', 'Ç'); // , '\'', '""' 
    $after = array('i', 'g', 'u', 's', 'o', 'c', 'i', 'g', 'u', 'o', 'c'); // , '', '' 

    $clean = str_replace($before, $after, $str); 
    $clean = preg_replace('/[^a-zA-Z0-9 ]/', '', $clean); 
    $clean = preg_replace('!\s+!', '-', $clean); 
    $clean = strtolower(trim($clean, '-')); 

return $clean; 
} 

echo url_make('Bu Çocuğu Kim İşe Aldı'); // bu-cocugu-kim-ise-aldi 
echo url_make('Birisi"nin adı'); // birisinin-adi 
echo url_make("I'll make all happen"); // ill-make-all-happen 

Для получения плохо макияж все случиться вместо плохо делают, все это произошло, просто добавьте «\» «и» "'в список $ before, и добавьте' 'и' 'в список после

Смежные вопросы