Pregunta

He acabo de probar localmente mi aplicación web, todo funciona bien, pero después de subir a la aplicación de servidor se comporta de manera diferente. Yo uso formatiraj_string_url función para convertir los símbolos diacríticos y obtener url limpia ... a nivel local funciona bien, pero en el servidor esta función les duerma convertir la misma manera.

Unos días antes me probado esto en un tercer servidor y funcionó bien. Ahora estoy subiendo web para probar de nuevo en este tercer servidor, pero yo sólo pregunto lo que realmente podría ser la causa de tal comportamiento?

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: Antes de str_replace, esta función utiliza preg_replace. En este servidor era mostró el error:

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

Sin embargo, a nivel local, no tenía este problema

¿Fue útil?

Solución

¿Qué juego de caracteres está escrito en su archivo?

Puesto que usted ha escrito los caracteres que desea reemplazar directamente en el código, como cadenas, que están codificados en cualquier juego de caracteres del archivo utiliza. Si ese juego de caracteres difiere de lo que se obtiene desde el navegador, sus funciones no van a trabajar.

El punto importante que hay que tener en cuenta, es siempre mantener un registro del juego de caracteres de sus cadenas están codificados con, y convertir cuando es necesario.

Tome un vistazo a Kore Nordmanns Preguntas frecuentes sobre juegos de caracteres en PHP para algunos más punteros sobre los conjuntos de caracteres.

Otros consejos

Le recomiendo que se basan en el código existente, probado altamente para hacer esto. Creo que todas estas funciones suponen UTF-8 de entrada y salida ASCII de 7 bits:

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top