2011-05-13 22 views
6

Quiero hacer un importador de archivos CSV en mi sitio web. Quiero que el usuario elija el delimitador.Convierte caracteres especiales como ' t' en " t" (una pestaña real)

El problema es cuando el formulario envía, el campo delimitador se almacena como '\ t', por ejemplo, así que cuando estoy analizando el archivo, busco la cadena '\ t' en lugar de una TAB real. Hace lo mismo con todos los caracteres especiales como \ r, \ n, etc ...

Quiero saber la forma o la función que se utilizará para convertir estos caracteres a su verdadera representación sin usar una matriz como:

  • 't' => "\ t"
  • 'r' => "\ r"
  • ...

Respuesta

6

Probablemente debería decidir qué caracteres especiales le permitir y crear una función como ésta:

function translate_quoted($string) { 
    $search = array("\\t", "\\n", "\\r"); 
    $replace = array("\t", "\n", "\r"); 
    return str_replace($search, $replace, $string); 
} 
0

imposible parece SO está dejando la pestaña entre comillas, pero tabular una vez en cualquier pad y luego copiar en comillas debería funcionar.

$data = str_replace("\t", " ", $data); 
+1

Las entidades HTML son agradables para HTML, pero ¿eso no causará problemas si copia y pega en un archivo de texto plano? – drudge

+0

Ah, sí. Estoy acostumbrado a trabajar con HTML un poco, supongo. –

1

Esto parece sencillo vs comillas dobles diversión:

$str = strtr($str, '\t\n\r', "\t\n\r"); 
Cuestiones relacionadas