2009-10-12 7 views
2

Je viens de tester localement mon application web, tout fonctionne bien, mais après le téléchargement sur l'application serveur se comporte différemment. J'utilise la fonction formatiraj_string_url pour convertir les symboles diacritiques et obtenir une URL propre ... localement cela fonctionne bien mais sur le serveur cette fonction ne les convertit pas de la même façon.Jeu de caractères différent sur un serveur différent?

Quelques jours plus tôt, j'ai testé cela sur un troisième serveur et cela a bien fonctionné. Maintenant, je télécharge web pour le tester à nouveau sur ce troisième serveur, mais je me demande juste ce qui pourrait vraiment être la cause d'un tel comportement?

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; 
    } 

EDIT: Avant str_replace, cette fonction utilisait preg_replace. Sur le serveur ce fut l'erreur a montré:

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 

Mais localement, je ne pas ce problème

Répondre

2

Quelle est votre charset fichier écrit en?

Depuis que vous avez écrit les caractères que vous souhaitez remplacer directement dans votre code, en tant que chaînes, ils sont codés dans n'importe quel jeu de caractères que le fichier utilise. Si ce jeu de caractères diffère de ce que vous obtenez du navigateur, vos fonctions ne fonctionneront pas.

Le point important que vous devez garder à l'esprit est de toujours garder une trace du charset avec lequel vos chaînes sont encodées et de les convertir si nécessaire.

Jetez un oeil à Kore Nordmanns FAQ about charsets in PHP pour plus de pointeurs sur les charsets.

+0

Merci d'avoir répondu! –

Questions connexes