我想用英文字母替换句子中的每个土耳其字母,我尝试以下功能:
$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 :(得分: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()工作正常。它应该工作正常。
答案 1 :(得分: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
要产生i-ll-make-all-happen而不是ill-make-all-happen,只需添加&#39; \&#39;&#39;和&#39;&#39;&#39;到$之前的列表,并添加&#39; &#39;和&#39; &#39;到
之后的列表