2012-03-29 22 views
5

txt He presentar su contenido como estoeliminar caracteres de nueva línea del archivo txt utilizando php

Hello 
World 
John 
play 
football 

Quiero borrar el carácter de línea cuando lee este archivo de texto, pero no sé cómo se vea como el archivo .txt y su codificación es utf-8

+0

Mira, ¿quieres que la reemplazará con nada, o con algún otro tipo de espacios en blanco? – ghoti

Respuesta

8

Hay diferentes tipos de líneas nuevas. Esto eliminará todos los 3 tipos de $string:

$string = str_replace(array("\r", "\n"), '', $string) 
+0

¿hay 2 tipos o 3 tipos? – Mira

+0

@Mira, 3 tipos ('\ r',' \ n', y '\ r \ n') y el script en mi respuesta se ocupa del 3. –

0

observo que la forma en que se pega en la cuestión, este archivo de texto parece tener espacios en blanco al final de cada línea. Asumiré que fue accidental.

<?php 

// Ooen the file 
$fh = fopen("file.txt", "r"); 

// Whitespace between words (this can be blank, or anything you want) 
$divider = " "; 

// Read each line from the file, adding it to an output string 
$output = ""; 
while ($line = fgets($fh, 40)) { 
    $output .= $divider . trim($line); 
} 
fclose($fh); 

// Trim off opening divider 
$output=substr($output,1); 

// Print our result 
print $output . "\n"; 
+0

El resultado no será válido cuando cualquiera de las palabras tendrá más de 40 bytes (sin mencionar que solo funcionaría para palabras sueltas por línea) 'recortar 'no es una buena opción si - será suficiente para usar rtrim (solo necesita recortar el lado derecho) - no se olvide de la segundo argumento que es una máscara de personaje. Por defecto, recortará: espacios, pestañas, nuevas líneas, retorno de carro, nulo-byte y pestañas verticales. – abuduba

3

Si vas a estar poniendo las líneas en una matriz, una asumiendo un tamaño razonable podría intentar algo como esto.

$file = 'newline.txt';  
$data = file_get_contents($file); 
$lines = explode(PHP_EOL, $data); 

/** Output would look like this 

Array 
(
    [0] => Hello 
    [1] => World 
    [2] => John 
    [3] => play 
    [4] => football 
) 

*/ 
8

sólo tiene que utilizar la función file con FILE_IGNORE_NEW_LINES bandera.

file lee un archivo completo y devuelve una matriz que contiene todas las líneas del archivo.

Cada línea contiene un nuevo carácter de línea al final por defecto, pero podemos aplicar el recorte por FILE_IGNORE_NEW_LINES.

por lo que será simplemente:

$lines = file('file.txt', FILE_IGNORE_NEW_LINES); 

El resultado debe ser:

var_dump($lines); 
array(5) { 
    [0] => string(5) "Hello" 
    [1] => string(5) "World" 
    [2] => string(4) "John" 
    [3] => string(4) "play" 
    [4] => string(8) "football" 
} 
+0

Muy útil. No necesita pensar en las alimentaciones de línea. ¡¡¡Gracias!!! – shirkkan

+1

También puede usar esto: '$ lines = file ('file.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES)'. ¡De esta manera también saltas líneas vacías! –

Cuestiones relacionadas