Domanda

Ho appena provato a livello locale la mia applicazione web, tutto funziona bene, ma dopo il caricamento di un'applicazione server comporta in modo diverso. Io uso la funzione formatiraj_string_url per convertire simboli diacritici e ottenere url pulita ... a livello locale funziona bene, ma sul server di questa funzione pretende molto convertirli nello stesso modo.

Qualche giorno prima Ho provato questo su alcuni terzo server e ha funzionato bene. Ora sto caricando web per testare di nuovo su questo terzo server, ma mi chiedo che cosa potrebbe davvero essere la causa di tale comportamento?

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: Prima str_replace, questa funzione utilizzata preg_replace. Sul server di questo è stato l'errore mostrato:

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

Ma a livello locale, non ho avuto questo problema

È stato utile?

Soluzione

Quali set di caratteri è il file scritto in?

Dal momento che hai scritto i caratteri che si desidera sostituire direttamente nel codice, come stringhe, sono codificati in qualsiasi charset il file utilizza. Se quel charset è diverso da quello che si ottiene dal browser, le funzioni non stanno andando a lavorare.

Il punto importante che dovete tenere a mente, è quello di tenere sempre traccia del charset le corde sono codificati con, e convertire quando necessario.

Date un'occhiata a Kore Nordmanns FAQ su set di caratteri in PHP per alcuni ulteriori indicazioni su set di caratteri.

Altri suggerimenti

Vi consiglio si basano su codice esistente, altamente testato per fare questo. Credo che tutte queste funzioni assumono UTF-8 di ingresso e uscita 7-bit ASCII:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top