2012-12-24 4 views
0

비 ASCII 터키 문자를 대체 할 간단한 함수를 작성했습니다.비 ASCII 문자 선택 및 바꾸기

function url_cevir($yazi) { 
     $yazi = trim($yazi); 

     $eski = array('ü','Ü','ö','Ö','ş','Ş','ç','Ç','ı','İ','ğ','Ğ',' '); 
     $yeni = array('%C3%BC','%C3%9C','%C3%B6','%C3%96','%C5%9F','%C5%9E','%C3%A7','%C3%87','%C4%B1','%C4%B0','%C4%9F','%C4%9E','%20'); 


     return str_replace($eski,$yeni,$yazi); 
    } 

정확하게 내가 그것을 호출하는 페이지에서 정의 할 때 작동합니다. 그러나 그것은 단지 외부 페이지와 함께 그것을 포함 할 때 공백을 대체합니다.

모든 코드는 여기에 외부 페이지에서 이러한

을 오염하는 다른 코드가 없습니다 : 내가 echo ('ısı geçişi');를 사용하는 경우 내가 echo url_cevir('ısı geçişi');와 함께 사용이 ısı%20geçişi
를 인쇄되면

<?php 

include('functions/array_and_string_fns.php'); 


echo url_cevir('ısı geçişi'); 
?>  

그것이 ısı geçişi를 인쇄는 우리는 예상대로.
그래서 나는 문제가 함수 url_cevir에서오고 있다고 생각한다. 그리고 나는 아주 간단한 것을 놓치고 있다고 생각한다. 그것이 매우 흥미로운 문제인 기타 이유.

+0

나는이 문제를 이해하지 못한다. 함수가 공백을'% 20'으로 인코딩하지 않도록하려면 함수의 배열에서 해당 부분을 제거하십시오. –

+0

모든 $ eski = 문자를 $ yeni = 문자로 대체해야합니다. 하지만이 함수를 포함 할 때만 공백을 대체합니다. – Tahtakafa

답변

1

원본 파일에 리터럴 문자를 넣으면 실제 원본 파일의 인코딩이 중요 해집니다.

소스 파일마다 다른 인코딩이 있다고 생각합니다. 텍스트 편집기에서 설정을 확인하십시오.

+0

당신이 옳습니다. 문제는 텍스트 편집기의 문자 설정입니다. – Tahtakafa