Farklı sunucuda farklı charset?

2 Cevap php

Ben sadece her şey iyi çalışıyor, yerel olarak benim web uygulaması test, ancak sunucu uygulaması yükledikten sonra farklı davranır ettik. Ben yerel olarak gayet iyi çalışıyor ama sunucuda bu işlev onlara aynı şekilde dönüştürmek değildir ... Aksan sembolleri dönüştürmek ve temiz url almak için fonksiyon formatiraj_string_url kullanın.

Birkaç gün önce ben bazı üçüncü sunucuda bu test edilmiş ve iyi çalıştı. Şimdi bu üçüncü sunucuda tekrar test web yolluyorum, ama ben sadece ne gerçekten böyle davranışının nedeni olabilir acaba?

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: str_replace önce, bu fonksiyon preg_replace kullanılır. Sunucuda bu hata gösterdi:

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

Ama yerel, ben bu sorunu yoktu

2 Cevap

Hangi charset dosya yazılır?

Eğer karakterleri yazdım beri dizeleri olarak, onlar dosya kullanır ne charset kodlanmış, kodunuzun içine doğrudan değiştirmek istiyorum. Bu charset Eğer tarayıcıdan ne olsun farklıysa, sizin işlevleri işe gidiş değildir.

Aklınızda tutmanız gereken önemli nokta, her zaman dizeleri ile kodlanmış charset izlemek, ve ne zaman gerekliyse dönüştürmektir.

Karakter setlerinin hakkında bazı göstericiler için Kore Nordmanns FAQ about charsets in PHP bir göz atın.

Bunu yapmak için mevcut, son derece test kod güvenmek öneririz. Ben bütün bu işlevleri UTF-8 giriş ve çıkış 7-bitlik ASCII varsayalım inanıyorum: