2009-10-12 44 views
2

我剛剛在本地測試了我的Web應用程序,一切正常,但上傳到服務器應用程序後的行爲有所不同。我使用函數formatiraj_string_url來轉換變音符號,並獲得乾淨的網址...本地它工作正常,但在服務器上這個功能不會以同樣的方式轉換它們。不同的服務器上的字符集?

幾天前,我在第三臺服務器上測試了它,它工作正常。現在我正在上傳Web以再次在第三臺服務器上進行測試,但我只是想知道這種行爲的真正原因是什麼?

function formatiraj_string_url($string) 
    { 
     $string = strtolower($string); 

     $znak[0] = ' '; 
     $znak[1] = 'Š'; 
     $znak[2] = 'š'; 
     $znak[3] = 'Đ'; 
     $znak[4] = 'đ'; 
     $znak[5] = 'Č'; 
     $znak[6] = 'č'; 
     $znak[7] = 'Ć'; 
     $znak[8] = 'ć'; 
     $znak[9] = 'Ž'; 
     $znak[10] = 'ž'; 
     $znak[11] = 'Š'; 
     $znak[12] = 'Đ'; 
     $znak[13] = 'Č'; 
     $znak[14] = 'Ć'; 
     $znak[15] = 'Ž'; 
     $znak[16] = 'š'; 
     $znak[17] = 'đ'; 
     $znak[18] = 'č'; 
     $znak[19] = 'ć'; 
     $znak[20] = 'ž'; 
     $znak[21] = 'Š'; // Š 
     $znak[22] = 'š'; // š 

     $zamjena[0] = '-'; 
     $zamjena[1] = 's'; 
     $zamjena[2] = 's'; 
     $zamjena[3] = 'd'; 
     $zamjena[4] = 'd'; 
     $zamjena[5] = 'c'; 
     $zamjena[6] = 'c'; 
     $zamjena[7] = 'c'; 
     $zamjena[8] = 'c'; 
     $zamjena[9] = 'z'; 
     $zamjena[10] = 'z'; 
     $zamjena[11] = 's'; 
     $zamjena[12] = 'd'; 
     $zamjena[13] = 'c'; 
     $zamjena[14] = 'c'; 
     $zamjena[15] = 'z'; 
     $zamjena[16] = 's'; 
     $zamjena[17] = 'd'; 
     $zamjena[18] = 'c'; 
     $zamjena[19] = 'c'; 
     $zamjena[20] = 'z'; 
     $zamjena[21] = 's'; 
     $zamjena[22] = 's'; 

     $string = str_replace($znak, $zamjena, $string); 
     $new_string = preg_replace("/[^a-zA-Z0-9-s]/", "", $string); 
     return $new_string; 
    } 

編輯:str_replace函數之前,該函數中使用的preg_replace。在服務器這是錯誤表明:

Warning: preg_replace() [function.preg-replace]: Compilation failed: nothing to repeat at offset 0 in /home2/sinjcom/public_html/sinj.com.hr/administracija/include/funkcije.php on line 200 

但本地,我沒有這個問題

回答

2

是你的文件寫入其中的字符集?

由於您已經將字符串直接替換爲字符串,因此它們會以文件使用的字符集進行編碼。如果該字符集與瀏覽器中的字符集不同,那麼您的函數將無法工作。

您需要牢記的重要一點是始終跟蹤字符串編碼的字符集,並在必要時進行轉換。

看看Kore Nordmanns FAQ about charsets in PHP關於charsets的更多指針。

+0

謝謝你的回答! – 2009-10-15 11:32:53

相關問題